使用spring stream傳送訊息程式碼例項
阿新 • • 發佈:2020-05-11
為什麼使用spring stream ?
spring stream 是用來做訊息佇列傳送訊息使用的。他隔離了各種訊息佇列的區別,使用統一的程式設計模型來發送訊息。
目前支援:
- rabbitmq
- kafka
- rocketmq
啟動rocketmq
rocketmq 支援windows
start mqnamesrv.cmd start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true
修改pom.xml
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-stream-binder-rocketmq</artifactId> </dependency>
增加發送接收JAVA程式碼
public interface InputOutput { String MAIL_OUTPUT = "mailOutput"; String MAIL_INPUT = "mailInput"; String OUTPUT = "output"; String INPUT = "input"; @Output(OUTPUT) MessageChannel output(); @Input(INPUT) SubscribableChannel input(); @Output(MAIL_OUTPUT) MessageChannel mailOutput(); @Input(MAIL_INPUT) SubscribableChannel mailInput(); }
在應用上增加註解
@EnableBinding({InputOutput.class})
增加yml配置
spring: cloud: stream: rocketmq: binder: name-server: 127.0.0.1:9876 bindings: output: destination: bpmmessage group: bpmmessage-group input: destination: bpmmessage group: bpmmessage-group-consumer mailOutput: destination: mail group: mail-group mailInput: destination: mail group: mail-group-consumer
編寫程式碼收發訊息:
MessageModel messageModel=new MessageModel(); messageModel.setMsgType("mail"); messageModel.setContent("helloworld"); inputOutput.mailOutput().send( MessageBuilder.withPayload( "mail" ).build()); inputOutput.output().send( MessageBuilder.withPayload( messageModel ).build() );
這裡傳送的是兩類訊息。
接收訊息:
@Service public class MessageListener { @StreamListener(InputOutput.INPUT) public void receive(MessageModel message) { System.err.println(message); System.err.println("ok"); } @StreamListener(InputOutput.MAIL_INPUT) public void receive(String message) { System.err.println(message); System.err.println("ok"); } }
分別接收兩類訊息
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。