成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

rabbitmq延遲消息示例

RyanQ / 2677人閱讀

摘要:官方插件僅支持版本中支持。使用過(guò)程聲明消息交換機(jī)實(shí)現(xiàn)實(shí)現(xiàn)消息發(fā)送實(shí)現(xiàn)實(shí)現(xiàn)

官方插件僅支持>=3.6.x 版本中支持。

本文描述的消息延遲機(jī)制采用官方推薦的插件rabbitmq-delayed-message-exchange,如精通rabbitmq和編程,請(qǐng)自行查看官方文檔,描述更加詳盡:

github

Rabbitmq插件列表

安裝
需要在集群每臺(tái)機(jī)器中安裝

由于rabbitmq并未內(nèi)置該插件,需要手動(dòng)下載安裝。關(guān)于已安裝的插件通過(guò)rabbitmq-plugins list可查看.

3.6.x下載地址

3.7.x下載地址

加載后解壓,并將其拷貝至(使用Linux Debian/RPM部署)rabbitmq服務(wù)器目錄:/usr/lib/rabbitmq/plugins中(windows和其他系統(tǒng)<安裝目錄> abbitmq_server-versionplugins).

啟用插件
需要在集群每臺(tái)機(jī)器中執(zhí)行

通過(guò)rabbitmq-plugins list查看已安裝列表,如下:

...
[ ] rabbitmq_delayed_message_exchange 20171215-3.6.x
...

使用命令rabbitmq-plugins enable rabbitmq_delayed_message_exchang啟用插件,輸出如下:

The following plugins have been enabled:
  rabbitmq_delayed_message_exchange

通過(guò)rabbitmq-plugins list查看已安裝列表,如下:

...
[E*] rabbitmq_delayed_message_exchange 20171215-3.6.x
...
機(jī)制

安裝插件后會(huì)生成新的Exchange類型x-delayed-message,該類型消息支持延遲投遞機(jī)制,接收到消息后并未立即將消息投遞至目標(biāo)隊(duì)列中,而是存儲(chǔ)在mnesia(一個(gè)分布式數(shù)據(jù)系統(tǒng))表中,檢測(cè)消息延遲時(shí)間,如達(dá)到可投遞時(shí)間時(shí)并將其通過(guò)x-delayed-type類型標(biāo)記的交換機(jī)類型投遞至目標(biāo)隊(duì)列。

Java使用過(guò)程 聲明x-delayed-message消息交換機(jī)

rabbitmq java client實(shí)現(xiàn)

// ... elided code ...
Map args = new HashMap();
args.put("x-delayed-type", "direct");
channel.exchangeDeclare("my-exchange", "x-delayed-message", true, false, args);
// ... more code ...

spring rabbitmq template實(shí)現(xiàn)

// ... elided code ...
Map args = new HashMap<>();
args.put("x-delayed-type", "direct");
Exchange exchange = new CustomExchange("test.exchange", "x-delayed-message", true, false, args);
//admin = RabbitmqAdmin
admin.declareExchange(exchange);

//more code...
消息發(fā)送

rabbitmq java client實(shí)現(xiàn)

// ... elided code ...
byte[] messageBodyBytes = "delayed payload".getBytes("UTF-8");
Map headers = new HashMap();
headers.put("x-delay", 5000);
AMQP.BasicProperties.Builder props = new AMQP.BasicProperties.Builder().headers(headers);
channel.basicPublish("test.exchange", "test", props.build(), messageBodyBytes);
// ... more code ...

spring rabbitmq template實(shí)現(xiàn)

MessageProperties properties = new MessageProperties();
properties.setHeader("x-delay", 1000);
//template : RabbitmqTemplate
template.convertAndSend("test.exchange", "test", new Message(body, properties));

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/68500.html

相關(guān)文章

  • Spring Cloud Stream 使用延遲消息實(shí)現(xiàn)定時(shí)任務(wù)(RabbitMQ

    摘要:然而實(shí)際業(yè)務(wù)中還存在另外一種定時(shí)任務(wù),它可能需要一些觸發(fā)條件才開(kāi)始定時(shí),比如編寫博文時(shí)候,設(shè)置小時(shí)之后發(fā)送。在消息監(jiān)聽(tīng)類中,對(duì)通道定義了,這里會(huì)對(duì)延遲消息做具體的邏輯。由于消息的消費(fèi)是延遲的,從而變相實(shí)現(xiàn)了從消息發(fā)送那一刻起開(kāi)始的定時(shí)任務(wù)。 應(yīng)用場(chǎng)景 我們?cè)谑褂靡恍╅_(kāi)源調(diào)度系統(tǒng)(比如:elastic-job等)的時(shí)候,對(duì)于任務(wù)的執(zhí)行時(shí)間通常都是有規(guī)律性的,可能是每隔半小時(shí)執(zhí)行一次,或者...

    honhon 評(píng)論0 收藏0
  • RabbitMQ延遲消息延遲極限是多少?

    摘要:?jiǎn)栴}定位因?yàn)椴皇撬械南⒍汲霈F(xiàn)了沒(méi)有延遲消息效果的因素,通過(guò)有問(wèn)題的消息特征,大致猜測(cè)可能是延遲時(shí)間過(guò)長(zhǎng)導(dǎo)致了消息延遲失敗。所以,我們?cè)谑褂玫难舆t消息功能時(shí)候,必須注意它的延遲極限是毫秒。 之前在寫Spring Cloud Stream專題內(nèi)容的時(shí)候,特地介紹了一下如何使用RabbitMQ的延遲消息來(lái)實(shí)現(xiàn)定時(shí)任務(wù)。最近正好因?yàn)殚_(kāi)發(fā)碰到了使用過(guò)程中發(fā)現(xiàn),延遲消息沒(méi)有效果,消息直接就被消...

    stormzhang 評(píng)論0 收藏0
  • 一起來(lái)學(xué)SpringBoot | 第十三篇:RabbitMQ延遲隊(duì)列

    摘要:另一種就是用中的位于包下,本質(zhì)是由和實(shí)現(xiàn)的阻塞優(yōu)先級(jí)隊(duì)列。表明了一條消息可在隊(duì)列中存活的最大時(shí)間。當(dāng)某條消息被設(shè)置了或者當(dāng)某條消息進(jìn)入了設(shè)置了的隊(duì)列時(shí),這條消息會(huì)在時(shí)間后死亡成為。 SpringBoot 是為了簡(jiǎn)化 Spring 應(yīng)用的創(chuàng)建、運(yùn)行、調(diào)試、部署等一系列問(wèn)題而誕生的產(chǎn)物,自動(dòng)裝配的特性讓我們可以更好的關(guān)注業(yè)務(wù)本身而不是外部的XML配置,我們只需遵循規(guī)范,引入相關(guān)的依賴就可...

    selfimpr 評(píng)論0 收藏0
  • Rabbitmq基礎(chǔ)組件架構(gòu)設(shè)計(jì)

    摘要:基礎(chǔ)組件架構(gòu)設(shè)計(jì)基礎(chǔ)組件封裝設(shè)計(jì)迅速消息發(fā)送支持迅速消息發(fā)送模式,在一些日志收集統(tǒng)計(jì)分析等需求下可以保證高性能,高吞吐量?;A(chǔ)組件封裝設(shè)計(jì)事務(wù)消息發(fā)送支持事務(wù)消息,且保障可靠性投遞,在金融行業(yè)單筆大金額操作時(shí)會(huì)有此類需求。 Rabbitmq基礎(chǔ)組件架構(gòu)設(shè)計(jì) 基礎(chǔ)組件封裝設(shè)計(jì) - 迅速消息發(fā)送支持迅速消息發(fā)送模式,在一些日志收集、統(tǒng)計(jì)分析等需求下可以保證高性能,高吞吐量。 基礎(chǔ)組件封...

    Steve_Wang_ 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<