日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

ActiveMQ入门-ActiveMQ跟SpringBoot整合发送接收Topic

發(fā)布時(shí)間:2024/4/13 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ActiveMQ入门-ActiveMQ跟SpringBoot整合发送接收Topic 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

默認(rèn)情況下@JmsListener不能監(jiān)聽topic,需要添加工廠類

package jms;import org.apache.activemq.command.ActiveMQQueue; import org.apache.activemq.command.ActiveMQTopic; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jms.annotation.EnableJms; import org.springframework.jms.config.DefaultJmsListenerContainerFactory; import org.springframework.jms.config.JmsListenerContainerFactory;import javax.jms.ConnectionFactory;@Configuration @EnableJms //啟用jms功能 public class ActiveMqConfig {//如果要使用topic類型的消息,則需要配置該bean@Bean("jmsTopicListenerContainerFactory")public JmsListenerContainerFactory jmsTopicListenerContainerFactory(ConnectionFactory connectionFactory){DefaultJmsListenerContainerFactory factory= new DefaultJmsListenerContainerFactory();factory.setConnectionFactory(connectionFactory);factory.setPubSubDomain(true); //這里必須設(shè)置為true,false則表示是queue類型return factory;}} public void sendMessageTopic(ActiveMQTopic destination,String message) {jmsTemplate.convertAndSend(destination,"這是一個(gè)廣播"); } @JmsListener(destination = "mytest.topic",containerFactory = "jmsTopicListenerContainerFactory") public void receiveToic(String text){System.out.println(text); } @Test public void sendMessageTopic()throws Exception{ActiveMQTopic destination = new ActiveMQTopic("mytest.topic");producer.sendMessageTopic(destination,"你好,ActiveMQ"); }

剛才出現(xiàn)了一個(gè)問題,在topic消費(fèi)后也返回了一個(gè)提示信息,但是報(bào)錯(cuò)了

對(duì)于點(diǎn)對(duì)點(diǎn)消費(fèi)者來說, 我可以給發(fā)送者回一條消息,告訴他我收到消息了,但是對(duì)于topic,發(fā)送者對(duì)接受者是否接受到消息不感興趣,所以在發(fā)送者如果回送消息的時(shí)候會(huì)報(bào)錯(cuò)。

最后一個(gè)比較重要的知識(shí)點(diǎn):對(duì)于queue來說,我們的消息發(fā)送出去,會(huì)一直保存在服務(wù)器上,等待消費(fèi)者消費(fèi)他,如果此時(shí)沒有消費(fèi)者在線,會(huì)一直等待,會(huì)把消息做持久化處理,保存在硬盤上,如果消費(fèi)者上線,消費(fèi)者就能監(jiān)聽到這條消息并進(jìn)行消費(fèi)。

對(duì)于topic來說,我一條消息發(fā)送出去,可能會(huì)有多個(gè)消費(fèi)者去消費(fèi),如果這個(gè)時(shí)候消費(fèi)者不在線,默認(rèn)情況下,等消費(fèi)者上線,他也無法收到這條消息,相當(dāng)于這條消息丟失了。

也可以配置topic的持久化,保證消費(fèi)者不在線的情況下,也能收到這條消息,那這跟queue的機(jī)制就類似了。

==特殊情況:如果消息發(fā)送失敗怎么辦?一直失敗怎么辦?==

==消息的重試機(jī)制,死信隊(duì)列==

總結(jié)

以上是生活随笔為你收集整理的ActiveMQ入门-ActiveMQ跟SpringBoot整合发送接收Topic的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。