使用spring stream發(fā)送消息代碼實(shí)例
為什么使用spring stream ?
spring stream 是用來(lái)做消息隊(duì)列發(fā)送消息使用的。他隔離了各種消息隊(duì)列的區(qū)別,使用統(tǒng)一的編程模型來(lái)發(fā)送消息。
目前支持:
- rabbitmq
- kafka
- rocketmq
啟動(dòng)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>
增加發(fā)送接收J(rèn)AVA代碼
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();
}
在應(yīng)用上增加注解
@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
編寫(xiě)代碼收發(fā)消息:
MessageModel messageModel=new MessageModel();
messageModel.setMsgType("mail");
messageModel.setContent("helloworld");
inputOutput.mailOutput().send( MessageBuilder.withPayload(
"mail"
).build());
inputOutput.output().send(
MessageBuilder.withPayload(
messageModel
).build()
);
這里發(fā)送的是兩類(lèi)消息。
接收消息:
@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");
}
}
分別接收兩類(lèi)消息
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Springboot Session共享實(shí)現(xiàn)原理及代碼實(shí)例
這篇文章主要介紹了Springboot Session共享實(shí)現(xiàn)原理及代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
Spring Mybatis 基本使用過(guò)程(推薦)
Mybatis是一個(gè)半自動(dòng)ORM(Object Relational Mapping)框架,它可以簡(jiǎn)化數(shù)據(jù)庫(kù)編程,讓開(kāi)發(fā)者更專(zhuān)注于SQL本身,本文給大家介紹Spring Mybatis 基本使用過(guò)程,感興趣的朋友跟隨小編一起看看吧2024-09-09
解決IDEA鼠標(biāo)點(diǎn)擊光標(biāo)變大問(wèn)題
這篇文章主要介紹了解決IDEA鼠標(biāo)點(diǎn)擊光標(biāo)變大問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02
使用java?-jar修改SpringBoot中application.properties的配置項(xiàng)
這篇文章主要介紹了使用java?-jar修改SpringBoot中application.properties的配置項(xiàng)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
關(guān)于Java中的可見(jiàn)性和有序性問(wèn)題
這篇文章主要介紹了關(guān)于Java中的可見(jiàn)性和有序性問(wèn)題,Java在誕生之初就支持多線程,自然也有針對(duì)這三者的技術(shù)方案,今天就學(xué)習(xí)一下Java如何解決其中的可見(jiàn)性和有序性導(dǎo)致的問(wèn)題,需要的朋友可以參考下2023-08-08
Java優(yōu)化if-else代碼的實(shí)戰(zhàn)記錄
開(kāi)發(fā)中經(jīng)常會(huì)根據(jù)不同的參數(shù)判斷走不同的邏輯業(yè)務(wù),我們常用的方法就是if/else嵌套使用,導(dǎo)致每增加一個(gè)需求就加一個(gè)if,慢慢的就會(huì)發(fā)現(xiàn)自己寫(xiě)的代碼中出現(xiàn)了大量的if/else,這篇文章主要給大家介紹了關(guān)于Java優(yōu)化if-else代碼的相關(guān)資料,需要的朋友可以參考下2021-09-09
詳談HashMap和ConcurrentHashMap的區(qū)別(HashMap的底層源碼)
下面小編就為大家?guī)?lái)一篇詳談HashMap和ConcurrentHashMap的區(qū)別(HashMap的底層源碼)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08
java中File類(lèi)應(yīng)用遍歷文件夾下所有文件
這篇文章主要為大家詳細(xì)介紹了java中File類(lèi)應(yīng)用遍歷文件夾下所有文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08
Java服務(wù)中的大文件上傳和下載優(yōu)化技巧分享
在Java服務(wù)中處理大文件的上傳和下載是一項(xiàng)常見(jiàn)但復(fù)雜的任務(wù),為了提供優(yōu)秀的用戶(hù)體驗(yàn)和高效的系統(tǒng)性能,我們將探索多種策略和技術(shù),并在每一點(diǎn)上都提供代碼示例以便實(shí)戰(zhàn)應(yīng)用,需要的朋友可以參考下2023-10-10
JAVA如何使用Math類(lèi)操作數(shù)據(jù)
這篇文章主要介紹了JAVA如何使用Math類(lèi)操作數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04

