使用spring stream发送消息代码实例
为什么使用springstream?
springstream是用来做消息队列发送消息使用的。他隔离了各种消息队列的区别,使用统一的编程模型来发送消息。
目前支持:
- rabbitmq
- kafka
- rocketmq
启动rocketmq
rocketmq支持windows
startmqnamesrv.cmd startmqbroker.cmd-n127.0.0.1:9876autoCreateTopicEnable=true
修改pom.xml
com.alibaba.cloud spring-cloud-stream-binder-rocketmq
增加发送接收JAVA代码
publicinterfaceInputOutput{ StringMAIL_OUTPUT="mailOutput"; StringMAIL_INPUT="mailInput"; StringOUTPUT="output"; StringINPUT="input"; @Output(OUTPUT) MessageChanneloutput(); @Input(INPUT) SubscribableChannelinput(); @Output(MAIL_OUTPUT) MessageChannelmailOutput(); @Input(MAIL_INPUT) SubscribableChannelmailInput(); }
在应用上增加注解
@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
编写代码收发消息:
MessageModelmessageModel=newMessageModel(); messageModel.setMsgType("mail"); messageModel.setContent("helloworld"); inputOutput.mailOutput().send(MessageBuilder.withPayload( "mail" ).build()); inputOutput.output().send( MessageBuilder.withPayload( messageModel ).build() );
这里发送的是两类消息。
接收消息:
@Service publicclassMessageListener{ @StreamListener(InputOutput.INPUT) publicvoidreceive(MessageModelmessage){ System.err.println(message); System.err.println("ok"); } @StreamListener(InputOutput.MAIL_INPUT) publicvoidreceive(Stringmessage){ System.err.println(message); System.err.println("ok"); } }
分别接收两类消息
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。