springcloud stream rabbitmq,springcloud stream rocketmq

  springcloud stream rabbitmq,springcloud stream rocketmq

  春云整合消息中间件流实现消息驱动功能

  1.代码实现:

  创建项目溪流

  添加依赖

  父groupIdorg.springframework.boot/groupId artifactId spring-boot-starter-parent/artifactId版本2 . 6 . 2/版本相对路径/!-从存储库-/父groupIdcom.cxh/groupId工件id流/artifactId版本0 .0 .1-快照/版本名称流/名称描述Spring Boot的演示项目/描述属性java。版本8/java。版本春天-云-阿里巴巴-依赖。版本2021.1/春天-云-阿里巴巴-依赖。版本春云相依。版本2021 .0 .0/spring-cloud-dependencies版本/属性依赖项管理依赖关系groupIdorg.springframework.cloud/groupId工件id spring-cloud-dependencies/工件id版本${spring-cloud-dependencies

   <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-stream-rabbit</artifactId> </dependency> </dependencies>监听类

  

 @EnableBinding(Sink.class)public class SinkReceiver { private static Logger logger = LoggerFactory.getLogger(SinkReceiver.class); @StreamListener(Sink.INPUT) public void receive(String payload) { logger.info("Received: " + payload); } }

2.实现效果:

 

  启动rabbitmq, 项目stream

  打开浏览器http://localhost:15672/,使用账号密码guest登录rabbitmq, 在队列中发现消息:

  测试send

  

 

  查看控制台消息:

  

com.cxh.stream.SinkReceiver : Received: 测试send

 

  

补充

 

  Spring Cloud Stream专门用于事件驱动的微服务系统,使用消息中间件来收发信息。使用Spring Cloud Stream可专注于业务开发,而不用花太多心思在应用与MQ之间的交互上。而且,在切换MQ后,也无须做太多的代码改动。

  所以Spring Cloud Stream和RabbitMQ还可以整合实现消息的收发

  

 

  整合过程

  添加依赖

  

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

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

 

  定义处理收发的方法

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

  发送消息:

  

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

只发送一个String,一般业务通常为Entity类。这里发送的内容也固定不变,实际业务可以通过查数据库,读文件等方式获取数据源。

 

  接收消息:

  

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

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

 

  配置属性

  配置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就会发送一次消息。

  运行

  先启动个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。

  以上就是Springcloud整合stream,rabbitmq实现消息驱动功能的详细内容,更多关于Springcloud stream rabbitmq消息驱动的资料请关注盛行IT其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: