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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RabbitMQ消息队列生产者和消费者

發(fā)布時(shí)間:2025/7/14 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RabbitMQ消息队列生产者和消费者 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

概述

生產(chǎn)者生產(chǎn)數(shù)據(jù)至 RabbitMQ 隊(duì)列,消費(fèi)者消費(fèi) RabbitMQ 隊(duì)列里的數(shù)據(jù)。

詳細(xì)

代碼下載:http://www.demodashi.com/demo/10723.html

一、準(zhǔn)備工作

1、安裝 RabbitMQ 服務(wù)和 RabbitMQ Management。

RabbitMQ在windows下的安裝 (點(diǎn)擊查看)?

RabbitMQ官網(wǎng)(可下載安裝包)(點(diǎn)擊查看)

?

2、在 RabbitMQ 管理界面創(chuàng)建用戶 test 密碼 test,創(chuàng)建名為 test_vhost 的 Virtual Hosts ,將 test_vhost 分配 給 test用戶

3、本實(shí)例主要演示如何發(fā)送消息至 RabbitMQ 隊(duì)列 ,以及如何消費(fèi) RabbitMQ 隊(duì)列的消息

二、程序?qū)崿F(xiàn)

1、程序結(jié)構(gòu)

?

2、實(shí)現(xiàn)思路

配置發(fā)送的 Exchange 和 Queue

<rabbit:queue id="queue.ljaer.test" name="queue.ljaer.test"auto-declare="true" auto-delete="false" exclusive="false" durable="true"declared-by="rabbitAdmin" /><!-- Exchange Type 為 topic 配置方法 --><rabbit:topic-exchange id="exchange.topic.producer"auto-declare="true" name="exchange.topic.producer" auto-delete="false"durable="true" declared-by="rabbitAdmin"><rabbit:bindings><rabbit:binding pattern="queue.ljaer.test" queue="queue.ljaer.test" /></rabbit:bindings></rabbit:topic-exchange>

?

連接 RabbitMQ 發(fā)送數(shù)據(jù)至隊(duì)列

public class RabbitmqProducerTest {private static ApplicationContext context;public static void main(String[] args) {context = new ClassPathXmlApplicationContext("send-rabbitMq.xml");AmqpTemplate amqpTemplate = context.getBean(AmqpTemplate.class);JSONObject json = new JSONObject();json.put("name", "張三");json.put("age", "15");amqpTemplate.convertAndSend("queue.ljaer.test", json);//amqpTemplate.convertAndSend("exchange.topic.producer","queue.ljaer.test", json);System.out.println("success");} }

?

?

配置監(jiān)聽

<!--定義queue 接收數(shù)據(jù) --><rabbit:queue id="queue.ljaer.test" name="queue.ljaer.test"auto-declare="true" auto-delete="false" exclusive="false" durable="true"declared-by="rabbitAdmin" /><!-- 消息監(jiān)聽器 --><bean id="rabbitmqConsumerTest" class="com.test.mq.RabbitmqConsumerTest" /><!-- 隊(duì)列監(jiān)聽 --><rabbit:listener-containerconnection-factory="connectionFactory" acknowledge="auto"><rabbit:listener queues="queue.ljaer.test" ref="rabbitmqConsumerTest" /></rabbit:listener-container>

?

監(jiān)聽消費(fèi) RabbitMQ 隊(duì)列的數(shù)據(jù)

public class RabbitmqConsumerTest implements MessageListener {public void onMessage(Message message) {System.out.println("receive message:{}"+message.getBody());try {String s = new String(message.getBody(), "UTF-8");System.out.println("------>MQ接收到的數(shù)據(jù):"+s);} catch (UnsupportedEncodingException e) {// TODO Auto-generated catch blocke.printStackTrace();}} }

?

3、配置文件說明

#mq mq.host=192.168.99.100 mq.username=test mq.password=test mq.port=5672 mq.vhost=/test_vhost

三、運(yùn)行效果

1、導(dǎo)入項(xiàng)目至 Eclipse,修改 rabbit.properties 里面的連接信息,連接至你本地的 RabbitMQ 服務(wù)

2、執(zhí)行 RabbitmqProducerTest 的 main 方法,發(fā)送消息至 RabbitMQ 隊(duì)列

?

3、執(zhí)行 RabbitmqConsumerMain 的 main 方法,進(jìn)行隊(duì)列監(jiān)聽,消費(fèi) RabbitMQ 隊(duì)列里的數(shù)據(jù)

?

消費(fèi)完之后,在 RabbitMQ Managemenet 里面查看也會(huì)看到隊(duì)列數(shù)據(jù)減少

四、其他補(bǔ)充

1、注意用 guest 用戶創(chuàng)建 test 用戶之后,需要使用 test 用戶登錄才能看到該用戶下的隊(duì)列數(shù)據(jù)

2、如果選擇其他類型的 exchange ,注意配文件與 mq 上保持一致

?

代碼下載:http://www.demodashi.com/demo/10723.html

注:本文著作權(quán)歸作者,由demo大師發(fā)表,拒絕轉(zhuǎn)載,轉(zhuǎn)載需要作者授權(quán)

總結(jié)

以上是生活随笔為你收集整理的RabbitMQ消息队列生产者和消费者的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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