中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

小語種網(wǎng)站寧德seo培訓(xùn)

小語種網(wǎng)站,寧德seo培訓(xùn),北京網(wǎng)站建設(shè)模板,維護(hù)一個(gè)網(wǎng)站一年多少錢RocketMQ 延遲消息 RocketMQ 消費(fèi)者啟動(dòng)流程 什么是延遲消息 RocketMQ 延遲消息是指,生產(chǎn)者發(fā)送消息給消費(fèi)者消息,消費(fèi)者需要等待一段時(shí)間后才能消費(fèi)到。 使用場景 用戶下單之后,15分鐘未支付,對支付賬單進(jìn)行提醒或者關(guān)單處理…

RocketMQ 延遲消息

RocketMQ 消費(fèi)者啟動(dòng)流程

什么是延遲消息

RocketMQ 延遲消息是指,生產(chǎn)者發(fā)送消息給消費(fèi)者消息,消費(fèi)者需要等待一段時(shí)間后才能消費(fèi)到。

使用場景

用戶下單之后,15分鐘未支付,對支付賬單進(jìn)行提醒或者關(guān)單處理。

RocketMQ 開源版本的消息不支持任意時(shí)間精度,只支持5s 10s 1m等等。

Broker 如何處理延遲消息

消息投遞如下:

  1. 生產(chǎn)者發(fā)送一個(gè)延遲消息到一個(gè) topic
  2. Broker 判斷是個(gè)延遲消息后,將消息暫存
  3. Broker 通過延遲服務(wù), 先檢查消息是否過期,如果到期將消息投遞到目標(biāo) topic
  4. 消費(fèi)者消費(fèi)topic中的投遞延遲消息。

開源RocketMQ 的消息不支持任意精度,默認(rèn)支持 18個(gè) level:

messageDelayLevel=1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h

Broker 在啟動(dòng)的時(shí)候,會(huì)創(chuàng)建一個(gè)內(nèi)部 topic:“SCHEDULE_TOPIC_XXXX” 根據(jù)延遲 level 數(shù)量,創(chuàng)建對應(yīng)數(shù)量的 隊(duì)列。 也就是說 18 level 對應(yīng)了18 個(gè)隊(duì)列。

具體可以在 代碼TopicConfigManager.java 中 看到:

private static final int SCHEDULE_TOPIC_QUEUE_NUM = 18;

要注意的是,Broker 一般是集群模式
部署,也就是說,每個(gè)Broker 都會(huì)有18個(gè)隊(duì)列。

TopicConfigManager#TopicConfigManager(BrokerController brokerController)

生產(chǎn)者消息延遲發(fā)送

代碼示例如下:

Message msg=new Message();
msg.setTopic("TopicA");
msg.setTags("Tag");
msg.setBody("this is a delay message".getBytes());
//設(shè)置延遲level為5,對應(yīng)延遲1分鐘
msg.setDelayTimeLevel(5);
producer.send(msg);

Broker 存儲(chǔ)延遲消息

上一篇文章已經(jīng)談到,Broker 收到消費(fèi)者消息后,會(huì)進(jìn)行消息存儲(chǔ),然后再轉(zhuǎn)發(fā)到消費(fèi)隊(duì)列(ConsumerQueue),然后再推給消費(fèi)者。

其實(shí)一旦消息轉(zhuǎn)發(fā)到

存儲(chǔ)延遲消息的流程也類似

  1. 確定延遲消息投遞到topic 哪個(gè)隊(duì)列。存儲(chǔ)生產(chǎn)者寫入的消息時(shí),將消息轉(zhuǎn)發(fā)到 ConsumeQueue 中,消費(fèi)者就能消費(fèi)到。 延遲消息不能立即消息到,于是將 topic 名稱修改為 SCHEDULE_TOPIC_XXX,并根據(jù)延遲消息級別,確定投遞到哪個(gè)隊(duì)列上。同時(shí)還會(huì)將原來消息要發(fā)送到的目標(biāo) topic 和隊(duì)列記錄投遞到哪個(gè)隊(duì)列。

代碼在CommitLog#asyncPutMessage 中

設(shè)置延遲消息的投遞隊(duì)列信息代碼如下:

 // Delay Deliveryif (msg.getDelayTimeLevel() > 0) {// 如果設(shè)置的級別超過了最大級別,重置延遲級別if (msg.getDelayTimeLevel() > this.defaultMessageStore.getScheduleMessageService().getMaxDelayLevel()) {msg.setDelayTimeLevel(this.defaultMessageStore.getScheduleMessageService().getMaxDelayLevel());}
// 計(jì)算延遲消息應(yīng)該投遞到 SCHEDULE_TOPIC_XXXX 到哪個(gè)隊(duì)列。topic = TopicValidator.RMQ_SYS_SCHEDULE_TOPIC;int queueId = ScheduleMessageService.delayLevel2QueueId(msg.getDelayTimeLevel());// Backup real topic, queueId// 記錄原始 topic ,queueid,方便后期投遞到目標(biāo) topicMessageAccessor.putProperty(msg, MessageConst.PROPERTY_REAL_TOPIC, msg.getTopic());MessageAccessor.putProperty(msg, MessageConst.PROPERTY_REAL_QUEUE_ID, String.valueOf(msg.getQueueId()));msg.setPropertiesString(MessageDecoder.messageProperties2String(msg.getProperties()));
// 更新消息投遞目標(biāo)為 SCHEDULE_TOPIC_XXX,queueIdmsg.setTopic(topic);msg.setQueueId(queueId);}

消息轉(zhuǎn)發(fā)

消息轉(zhuǎn)發(fā)過程其實(shí)中會(huì)對延遲消息做一些特殊處理

CommitLog中的消息轉(zhuǎn)發(fā)到CosumeQueue中是異步進(jìn)行的。在轉(zhuǎn)發(fā)過程中,會(huì)對延遲消息進(jìn)行特殊處理,主要是計(jì)算這條延遲消息需要在什么時(shí)候進(jìn)行投遞。

http://m.risenshineclean.com/news/32192.html

相關(guān)文章:

  • 青海省住房和城鄉(xiāng)建設(shè)廳門戶網(wǎng)站深圳做網(wǎng)站
  • 旬陽做網(wǎng)站湖南seo快速排名
  • 網(wǎng)站前端設(shè)計(jì)網(wǎng)絡(luò)營銷案例分析報(bào)告
  • 福州網(wǎng)站制作案例石家莊百度快照優(yōu)化排名
  • 聊天app開發(fā)源碼搜索引擎優(yōu)化seo專員
  • 國外域名查詢網(wǎng)站2021年10月新聞?wù)?/a>
  • 屬于網(wǎng)頁制作平臺蘭州seo優(yōu)化
  • 合肥網(wǎng)站關(guān)鍵詞好網(wǎng)站
  • 3g網(wǎng)站開發(fā)怎么在百度上投放廣告
  • 動(dòng)態(tài)網(wǎng)站開發(fā)語言優(yōu)勢需要留電話號碼的廣告
  • 阿里云企業(yè)網(wǎng)站備案制作網(wǎng)頁一般多少錢
  • 武漢企業(yè)宣傳片制作公司保定seo推廣外包
  • 深圳做網(wǎng)站設(shè)計(jì)公司營銷策略包括哪些內(nèi)容
  • 網(wǎng)站app開發(fā)建設(shè)關(guān)鍵詞在線查詢
  • 淳化網(wǎng)站制作福州網(wǎng)站快速排名提升
  • 胖咯科技網(wǎng)站建設(shè)百度小說風(fēng)云榜
  • 深圳住房建設(shè)廳網(wǎng)站首頁搜索量查詢
  • wordpress 刷新緩存太原百度關(guān)鍵詞優(yōu)化
  • 重復(fù)打開同一個(gè)網(wǎng)站怎么做軟文推廣多少錢
  • 技術(shù)支持 湖州網(wǎng)站建設(shè)百度怎么發(fā)布自己的信息
  • 泉州企業(yè)網(wǎng)站建設(shè)批量查詢指數(shù)
  • 自己有個(gè)服務(wù)器 怎樣做網(wǎng)站推廣普通話手抄報(bào)文字
  • 我們的網(wǎng)站長沙網(wǎng)站制作公司哪家好
  • 微信php網(wǎng)站開發(fā)流程人民網(wǎng) 疫情
  • 網(wǎng)絡(luò)工作室起名seo主管招聘
  • 學(xué)建網(wǎng)站 必須學(xué)那些知識seo網(wǎng)絡(luò)推廣優(yōu)化
  • 聊城網(wǎng)站建設(shè)上饒seo博客
  • 廣安市國土資源局網(wǎng)站建設(shè)推廣通
  • ps做網(wǎng)站主頁圖片怎樣在百度上免費(fèi)做廣告
  • 購物網(wǎng)站設(shè)計(jì)目的小吳seo博客