日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

詳解Springboot整合ActiveMQ(Queue和Topic兩種模式)

瀏覽:31日期:2023-05-24 10:36:56

寫在前面: 從2018年底開始學(xué)習(xí)SpringBoot,也用SpringBoot寫過一些項(xiàng)目。這里對(duì)學(xué)習(xí)Springboot的一些知識(shí)總結(jié)記錄一下。如果你也在學(xué)習(xí)SpringBoot,可以關(guān)注我,一起學(xué)習(xí),一起進(jìn)步。

ActiveMQ簡介

1、ActiveMQ簡介

Apache ActiveMQ是Apache軟件基金會(huì)所研發(fā)的開放源代碼消息中間件;由于ActiveMQ是一個(gè)純Java程序,因此只需要操作系統(tǒng)支持Java虛擬機(jī),ActiveMQ便可執(zhí)行。

2、ActiveMQ下載

下載地址:http://activemq.apache.org/components/classic/download/

詳解Springboot整合ActiveMQ(Queue和Topic兩種模式)

下載完成后解壓雙擊activemq.bat文件打開(不用安裝,直接使用),目錄和打開后效果如下:

詳解Springboot整合ActiveMQ(Queue和Topic兩種模式)

詳解Springboot整合ActiveMQ(Queue和Topic兩種模式)

運(yùn)行后,瀏覽器訪問http://localhost:8161/地址進(jìn)入一下界面。

詳解Springboot整合ActiveMQ(Queue和Topic兩種模式)

點(diǎn)擊Manage ActiveMQ broker登錄到ActiveMQ管理頁面,默認(rèn)賬號(hào)和密碼都是admin。管理頁面如下:

詳解Springboot整合ActiveMQ(Queue和Topic兩種模式)

SpringBoot整合ActiveMQ

1、新建SpringBoot項(xiàng)目

新建Springboot項(xiàng)目,添加對(duì)應(yīng)的依賴。項(xiàng)目完整的pom.xml文件如下:

<?xml version='1.0' encoding='UTF-8'?><project xmlns='http://maven.apache.org/POM/4.0.0' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd'> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.5.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.mcy</groupId> <artifactId>springboot-mq</artifactId> <version>0.0.1-SNAPSHOT</version> <name>springboot-mq</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--Activemq依賴--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build></project>

2、項(xiàng)目結(jié)構(gòu)

3、相關(guān)配置信息

在application.properties類中添加ActiveMQ相關(guān)的配置信息

server.port=8080server.servlet.context-path=/mq#MQ服務(wù)器地址spring.activemq.broker-url=tcp://localhost:61616#用戶名spring.activemq.user=admin#密碼spring.activemq.password=admin#設(shè)置是Queue隊(duì)列還是Topic,false為Queue,true為Topic,默認(rèn)false-Queuespring.jms.pub-sub-domain=false#spring.jms.pub-sub-domain=true#變量,定義隊(duì)列和topic的名稱myqueue: activemq-queuemytopic: activemq-topic

4、ActiveMQ配置類

ActiveMQ配置類ConfigBean,配置了Queue隊(duì)列和topic兩種模式,代碼如下:

import org.apache.activemq.command.ActiveMQQueue;import org.apache.activemq.command.ActiveMQTopic;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.jms.annotation.EnableJms;import org.springframework.stereotype.Component;import javax.jms.Topic;/** 1. MQ配置類 */@Component@EnableJmspublic class ConfigBean { @Value('${myqueue}') private String myQueue; @Value('${mytopic}') private String topicName; //隊(duì)列 @Bean public ActiveMQQueue queue(){ return new ActiveMQQueue(myQueue); } //topic @Bean public Topic topic(){ return new ActiveMQTopic(topicName); }}Queue隊(duì)列模式

隊(duì)列模式即點(diǎn)對(duì)點(diǎn)傳輸。點(diǎn)對(duì)點(diǎn)消息傳遞域的特點(diǎn)如下:

每個(gè)消息只能有一個(gè)消費(fèi)者,類似于1對(duì)1的關(guān)系。好比個(gè)人快遞自己領(lǐng)自己的。

消息的生產(chǎn)者和消費(fèi)者之間沒有時(shí)間上的相關(guān)性。無論消費(fèi)者在生產(chǎn)者發(fā)送消息的時(shí)候是否處于運(yùn)行狀態(tài),消費(fèi)者都可以提取消息。好比我們的發(fā)送短信,發(fā)送者發(fā)送后不見得接收者會(huì)即收即看。

消息被消費(fèi)后隊(duì)列中不會(huì)再存儲(chǔ),所以消費(fèi)者不會(huì)消費(fèi)到已經(jīng)被消費(fèi)掉的消息。

1、隊(duì)列生產(chǎn)者

QueueProducerController類為隊(duì)列生產(chǎn)者控制器,主要向消息隊(duì)列中發(fā)送消息。代碼如下:

import org.springframework.beans.factory.annotation.Autowired;import org.springframework.jms.core.JmsMessagingTemplate;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import javax.jms.Queue;/* * 隊(duì)列消息生產(chǎn)者 */@RestControllerpublic class QueueProducerController { @Autowired private JmsMessagingTemplate jmsMessagingTemplate; @Autowired private Queue queue; /* * 消息生產(chǎn)者 */ @RequestMapping('/sendmsg') public void sendmsg(String msg) { System.out.println('發(fā)送消息到隊(duì)列:' + msg); // 指定消息發(fā)送的目的地及內(nèi)容 this.jmsMessagingTemplate.convertAndSend(this.queue, msg); }}

2、隊(duì)列消費(fèi)者

QueueConsumerController類為隊(duì)列消費(fèi)者控制器,具體代碼如下:

import org.springframework.beans.factory.annotation.Value;import org.springframework.jms.annotation.JmsListener;import org.springframework.web.bind.annotation.RestController;/* 1. 隊(duì)列queue消費(fèi)者控制器 */@RestControllerpublic class QueueConsumerController { /* * 消費(fèi)者接收消息 */ @JmsListener(destination='${myqueue}') public void readActiveQueue(String message) { System.out.println('接受到:' + message); }}

3、測試效果

運(yùn)行項(xiàng)目在瀏覽器中訪問http://localhost:8080/mq/sendmsg?msg=123。向消息隊(duì)列中發(fā)送123。控制臺(tái)輸出效果:

詳解Springboot整合ActiveMQ(Queue和Topic兩種模式)

ActiveMQ控制臺(tái)顯示:

詳解Springboot整合ActiveMQ(Queue和Topic兩種模式)

Number Of Pending Messages:消息隊(duì)列中待處理的消息 Number Of Consumers:消費(fèi)者的數(shù)量 Messages Enqueued:累計(jì)進(jìn)入過消息隊(duì)列的總量 Messages Dequeued:累計(jì)消費(fèi)過的消息總量

【注】隊(duì)列模式時(shí),配置文件application.properties中spring.jms.pub-sub-domain屬性必須設(shè)置為false。

Topic模式

topic模式基于發(fā)布/訂閱模式的傳輸。基于發(fā)布/訂閱模式的傳輸?shù)奶攸c(diǎn)如下:

生產(chǎn)者將消息發(fā)布到topic中,每個(gè)消息可以有多個(gè)消費(fèi)者,屬于1:N的關(guān)系; 生產(chǎn)者和消費(fèi)者之間有時(shí)間上的相關(guān)性。訂閱某一個(gè)主題的消費(fèi)者只能消費(fèi)自它訂閱之后發(fā)布的消息。 生產(chǎn)者生產(chǎn)時(shí),topic不保存消息它是無狀態(tài)的不落地,假如無人訂閱就去生產(chǎn),那就是一條廢消息。

1、topic生產(chǎn)者

TopicProducerController類為topic生產(chǎn)者控制器,主要向消息隊(duì)列中發(fā)送消息。代碼如下:

import org.springframework.beans.factory.annotation.Autowired;import org.springframework.jms.core.JmsMessagingTemplate;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import javax.jms.Queue;import javax.jms.Topic;/** topic消息生產(chǎn)者*/@RestControllerpublic class TopicProducerController { @Autowired private JmsMessagingTemplate jmsMessagingTemplate; @Autowired private Topic topic; /* * 消息生產(chǎn)者 */ @RequestMapping('/topicsendmsg') public void sendmsg(String msg) { System.out.println('發(fā)送消息到MQ:' + msg); // 指定消息發(fā)送的目的地及內(nèi)容 this.jmsMessagingTemplate.convertAndSend(this.topic, msg); }}

2、topic消費(fèi)者

TopicConsumerController類為topic消費(fèi)者控制器,其中寫了兩個(gè)消費(fèi)者方法,可以理解為有兩個(gè)用戶訂閱。具體代碼如下:

import org.springframework.jms.annotation.JmsListener;import org.springframework.web.bind.annotation.RestController;/* 1. topic消費(fèi)者控制器 */@RestControllerpublic class TopicConsumerController { /* * 消費(fèi)者接收消息 */ @JmsListener(destination='${mytopic}') public void readActiveQueue(String message) { System.out.println('接受到:' + message); } @JmsListener(destination='${mytopic}') public void readActiveQueue1(String message) { System.out.println('接受到:' + message); }}

3、測試效果

運(yùn)行項(xiàng)目在瀏覽器中訪問http://localhost:8080/mq/topicsendmsg?msg=123。向消息隊(duì)列中發(fā)送123。控制臺(tái)輸出效果(有兩個(gè)消費(fèi)者方法):

詳解Springboot整合ActiveMQ(Queue和Topic兩種模式)

ActiveMQ控制臺(tái)顯示:

詳解Springboot整合ActiveMQ(Queue和Topic兩種模式)

Number Of Consumers:消費(fèi)者的數(shù)量 Messages Enqueued:累計(jì)進(jìn)入過消息隊(duì)列的總量 Messages Dequeued:累計(jì)消費(fèi)過的消息總量

【注】Topic模式時(shí),配置文件application.properties中spring.jms.pub-sub-domain屬性必須設(shè)置為true。

到此這篇關(guān)于詳解Springboot整合ActiveMQ(Queue和Topic兩種模式)的文章就介紹到這了,更多相關(guān)Springboot整合ActiveMQ內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
99成人在线| 91一区二区| 婷婷综合五月| 成人av二区| 男女精品网站| 久久国产精品久久久久久电车| 视频一区二区三区入口| 天堂va在线高清一区| 日韩福利视频一区| 久久精品一本| 香蕉成人av| 鲁大师影院一区二区三区| 亚洲一二av| 免费一级欧美片在线观看网站| 欧美日韩视频免费观看| 悠悠资源网久久精品| 综合激情在线| 免费在线播放第一区高清av| 亚洲爱爱视频| 日韩精品一级中文字幕精品视频免费观看 | 久久精品国产99久久| 九色精品91| 国产亚洲精品美女久久| 日韩欧美另类一区二区| 亚洲美洲欧洲综合国产一区 | 99xxxx成人网| 日韩av一级片| 成人日韩av| 亚洲黄色影院| 欧美一级二级视频| 日韩中文首页| 亚洲精品免费观看| 四虎成人av| 日韩精品一级中文字幕精品视频免费观看 | 香蕉久久国产| 久久中文字幕导航| 一区在线视频观看| 欧美黄色一区| 日韩一级网站| 精品国产欧美日韩| 亚洲婷婷丁香| 成人在线网站| 欧美啪啪一区| 国产精品试看| 日韩大片在线播放| 奇米亚洲欧美| 黄色亚洲在线| 国产96在线亚洲| 日韩中文字幕在线一区| 神马久久午夜| 国产伦精品一区二区三区千人斩 | 欧美丰满日韩| 欧美日韩 国产精品| 国产在线日韩| 精品网站aaa| 日韩三级一区| 欧美精品一区二区久久| 久久不卡日韩美女| 亚洲人成网77777色在线播放| 久草免费在线视频| 国产精品夜夜夜| 日韩在线播放一区二区| 国产黄大片在线观看| 日韩成人av影视| 欧美日韩国产亚洲一区| 福利视频一区| 麻豆成人91精品二区三区| 亚洲一二三区视频| 亚洲一区成人| 精品在线91| 日韩电影免费网站| 精品伊人久久| 国产精品久久久久久久久久齐齐 | 久久最新视频| 亚洲国产一区二区在线观看| 蜜臀国产一区| 91亚洲人成网污www| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 午夜日韩福利| 成人日韩在线观看| 日本久久黄色| 国产一区三区在线播放| 国产精品久久久久久久久免费高清| 蜜臀久久99精品久久久久宅男 | 91精品久久久久久久久久不卡| 精品三级在线观看视频| 欧美国产视频| 免费在线观看一区| 欧美日韩一视频区二区| 日韩在线网址| 日韩精品社区| 欧美一区网站| 日韩不卡在线观看日韩不卡视频| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲一区日韩在线| 99国产精品久久久久久久成人热| 午夜久久影院| 国产视频一区在线观看一区免费| 亚洲电影在线一区二区三区| 亚洲精品一区二区妖精| 亚洲国产不卡| 先锋影音国产一区| 免费国产亚洲视频| 免费人成网站在线观看欧美高清| 亚洲欧美日韩国产| 亚洲九九精品| 国产探花一区在线观看| 国产激情久久| 欧美www视频在线观看| 一区二区精品伦理...| 国产超碰精品| 国产精品免费看| 亚洲精品黄色| 国产精品久久久久久久久久齐齐| 精品精品99| 精品国模一区二区三区| 午夜国产精品视频免费体验区| 亚洲一区二区三区免费在线观看| 久久亚洲欧美| 欧美日韩夜夜| 日韩电影免费网站| 亚洲综合日本| 国产情侣久久| 麻豆网站免费在线观看| 久久国产电影| 日韩制服丝袜先锋影音| 国产精品主播| 快播电影网址老女人久久| 99亚洲视频| 欧美日韩亚洲一区二区三区在线| 国产aa精品| 亚洲制服少妇| 国产精品毛片视频| 久久久一本精品| 视频一区二区中文字幕| 国产精品亲子伦av一区二区三区| 成人午夜精品| 日韩综合一区二区三区| 人人草在线视频| 亚洲午夜免费| 国产91欧美| 视频一区欧美精品| 激情久久一区二区| 老牛影视一区二区三区| 久久精品亚洲| 性色一区二区| 国产一区二区三区91| 免费国产自线拍一欧美视频| 日韩国产欧美三级| 成人亚洲一区二区| 视频在线观看一区| 久久久久久久欧美精品| 麻豆视频久久| 亚洲精品字幕| 国产传媒在线| 91免费精品国偷自产在线在线| 国产资源在线观看入口av| 日韩免费精品| 亚洲主播在线| 久久精品1区| 国产精品亚洲一区二区在线观看| 尹人成人综合网| 国产精品原创| 久久国产三级| 丝袜亚洲另类欧美| 久久视频精品| 国产中文欧美日韩在线| 日韩欧美另类中文字幕| 欧美搞黄网站| 福利一区二区免费视频| 91精品丝袜国产高跟在线| 午夜视频精品| 久久九九99| 成人午夜在线| 国产精选久久| 日韩在线一二三区| 久久麻豆精品| 日韩在线第七页| 荡女精品导航| 久久不见久久见免费视频7| 亚洲91在线| 久热精品在线| 日韩午夜av在线| 久久久久欧美精品| 精品视频网站| 国产精品激情| 久久国产三级精品| 亚洲午夜免费| 香蕉成人久久| 在线亚洲成人| 热三久草你在线| 精品国产乱码久久久久久樱花| 青青伊人久久| 97久久亚洲| 日韩av一区二| 日韩av一级片| 欧美永久精品| 日韩不卡一二三区| 日本va欧美va欧美va精品| 日本一区二区中文字幕|