大家好,我是君哥。
我們?cè)谧鱿㈥?duì)列的技術(shù)選型時(shí),往往會(huì)結(jié)合業(yè)務(wù)場(chǎng)景進(jìn)行考慮。今天來(lái)聊一聊消息隊(duì)列可能會(huì)用到的 7 種消息場(chǎng)景。
消息隊(duì)列最基礎(chǔ)的功能就是生產(chǎn)者發(fā)送消息、Broker 保存消息,消費(fèi)者來(lái)消費(fèi)消息,以此實(shí)現(xiàn)系統(tǒng)解耦、削峰填谷的作用。
RocketMQ 實(shí)現(xiàn)了消費(fèi)端的死信隊(duì)列,當(dāng)消費(fèi)者消費(fèi)失敗時(shí),會(huì)進(jìn)行重試,如果重試 16 次還是失敗,則這條消息會(huì)被發(fā)送到死信隊(duì)列。
RabbitMQ 實(shí)現(xiàn)了生產(chǎn)者和 Broker 的死信隊(duì)列,下面三種情況,消息會(huì)被發(fā)送到死信隊(duì)列:
RabbitMQ 消息變成死信消息后,會(huì)被發(fā)送到死信交換機(jī)(Dead-Letter-Exchange)。
有一些業(yè)務(wù)場(chǎng)景下,我們需要優(yōu)先處理一些消息,比如銀行里面的金卡客戶、銀卡客戶優(yōu)先級(jí)高于普通客戶,他們的業(yè)務(wù)需要優(yōu)先處理。如下圖:
主流消息隊(duì)列中,RabbitMQ 是支持優(yōu)先級(jí)隊(duì)列的,代碼如下:
ConnectionFactory factory=new ConnectionFactory();cnotallow=factory.newConnection();Channel channel=connection.createChannel();Map<String, Object> args = new HashMap<String, Object>();//設(shè)置優(yōu)先級(jí)為 5args.put("x-max-priority", 5);channel.queueDeclare("my-priority-queue", true, false, false, args);
消息隊(duì)列技術(shù)選型,要考慮的因素很多,本文主要從業(yè)務(wù)場(chǎng)景來(lái)分析需要考慮的因素,同時(shí)技術(shù)上也需要考慮運(yùn)維復(fù)雜度、業(yè)務(wù)規(guī)模、社區(qū)活躍度、學(xué)習(xí)成本等因素。希望本文對(duì)你使用消息隊(duì)列有所幫助。
本文鏈接:http://www.www897cc.com/showinfo-26-11887-0.html消息隊(duì)列技術(shù)選型:這七種消息場(chǎng)景一定要考慮!
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com