关于java:整合Spring-Cloud-Stream-Binder与RabbitMQ进行消息发送与接收

我最新最全的文章都在 南瓜慢说 www.pkslow.com ,欢送大家来喝茶!

1 前言

Spring Cloud Stream专门用于事件驱动的微服务零碎,应用消息中间件来收发信息。应用Spring Cloud Stream可专一于业务开发,而不必花太多心理在利用与MQ之间的交互上。而且,在切换MQ后,也毋庸做太多的代码改变。

本文将整合Spring Cloud StreamRabbitMQ,以实现音讯收发。

2 整合过程

2.1 增加依赖

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-stream-binder-rabbit</artifactId>
</dependency>

不同的MQ应用不同的依赖,非常容易切换。

2.2 定义解决收发的办法

队列无非就是收和发,所以咱们要先定义好,怎么样发,怎么样收。

发送音讯:

@Bean
public Supplier<String> pkslowSource() {
  return () -> {
    String message = "www.pkslow.com";
    log.info("Sending value: " + message);
    return message;
  };
}

只发送一个String,个别业务通常为Entity类。这里发送的内容也固定不变,理论业务能够通过查数据库,读文件等形式获取数据源。

接管音讯:

@Bean
public Consumer<String> pkslowSink() {
  return message -> {
    log.info("Received message " + message);
  };
}

间接打印消息即可,我的项目中的逻辑可按具体业务实现。

2.3 配置属性

配置RabbitMQ:

spring:
  rabbitmq:
    host: localhost
    port: 5672
    username: pkslow
    password: 123456

配置Spring Cloud Stream的相干项:

spring:
  cloud:
    stream:
      function:
        definition: pkslowSource;pkslowSink
      bindings:
        pkslowSource-out-0:
         destination: pkslow-topic
        pkslowSink-in-0:
          destination: pkslow-topic
      poller:
        fixed-delay: 500

spring.cloud.stream.function.definition会定义解决办法,如本文的收发音讯的办法;

bindings配置对应的function;destination指向MQ的主题;

这里配了一个poller,每隔500ms就会发送一次音讯。

2.4 运行

先启动个RabbitMQ:

docker run \
-e RABBITMQ_DEFAULT_USER=pkslow \
-e RABBITMQ_DEFAULT_PASS=123456 \
-p 5672:5672 -p 15672:15672 \
rabbitmq:3.8-management

运行程序后,会本人创立主题、发送信息、接管信息:

运行日志如下:

能够看到每一次发/收大略是距离了500ms,当然不可能是准确的500ms。

3 总结

代码请查看:https://github.com/LarryDpk/p…


欢送关注微信公众号<南瓜慢说>,将继续为你更新…

多读书,多分享;多写作,多整顿。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理