我最新最全的文章都在 南瓜慢說 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...
歡迎關注微信公衆號<南瓜慢說>,將持續爲你更新...
多讀書,多分享;多寫做,多整理。