我最新最全的文章都在 南瓜慢说 www.pkslow.com ,欢迎你们来喝茶!
Spring Cloud Stream
专门用于事件驱动的微服务系统,使用消息中间件来收发信息。使用Spring Cloud Stream
可专一于业务开发,而不用花太多心思在应用与MQ之间的交互上。并且,在切换MQ后,也无须作太多的代码改动。java
本文将整合Spring Cloud Stream
和RabbitMQ
,以实现消息收发。git
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-stream-binder-rabbit</artifactId> </dependency>
不一样的MQ使用不一样的依赖,很是容易切换。github
队列无非就是收和发,因此咱们要先定义好,怎么样发,怎么样收。spring
发送消息:docker
@Bean public Supplier<String> pkslowSource() { return () -> { String message = "www.pkslow.com"; log.info("Sending value: " + message); return message; }; }
只发送一个String
,通常业务一般为Entity类。这里发送的内容也固定不变,实际业务能够经过查数据库,读文件等方式获取数据源。数据库
接收消息:bash
@Bean public Consumer<String> pkslowSink() { return message -> { log.info("Received message " + message); }; }
直接打印消息便可,项目中的逻辑可按具体业务实现。微信
配置RabbitMQ:微服务
spring: rabbitmq: host: localhost port: 5672 username: pkslow password: 123456
配置Spring Cloud Stream
的相关项:spa
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。
代码请查看:https://github.com/LarryDpk/p...
欢迎关注微信公众号<南瓜慢说>,将持续为你更新...
多读书,多分享;多写做,多整理。