国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

RabbitMQ延遲插件【安裝windows/Linux(Docker)】

這篇具有很好參考價(jià)值的文章主要介紹了RabbitMQ延遲插件【安裝windows/Linux(Docker)】。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

問(wèn)題:RabbitMq為什么要單獨(dú)裝一個(gè)延遲插件?

答案:

死信隊(duì)列:就是正常消費(fèi)者在一定時(shí)間內(nèi)沒(méi)有進(jìn)行消費(fèi)的消息會(huì)發(fā)送到死信隊(duì)列中,而會(huì)有消費(fèi)者在監(jiān)聽(tīng)死信隊(duì)列。消費(fèi)者在消息被拒絕、消息TTL過(guò)期、隊(duì)列達(dá)到最大長(zhǎng)度這三種情況下,消息會(huì)被消費(fèi)者轉(zhuǎn)發(fā)到死信隊(duì)列。

延遲隊(duì)列:其實(shí)就是死信隊(duì)列中消息過(guò)期的特殊情況

延遲隊(duì)列應(yīng)用場(chǎng)景:

RabbitMQ延遲插件【安裝windows/Linux(Docker)】

死信隊(duì)列實(shí)現(xiàn):在以上場(chǎng)景中,就可能需要在RabbitMq中有多個(gè)不同過(guò)期時(shí)間的需求,在這種情況下通過(guò)死信隊(duì)列可以初步實(shí)現(xiàn)如下:在定義隊(duì)列時(shí)并不設(shè)施固定的消息過(guò)期時(shí)間,而在生產(chǎn)者發(fā)送消息時(shí),將過(guò)期時(shí)間作為參數(shù)傳遞到隊(duì)列中,這樣就可以實(shí)現(xiàn)多種不同過(guò)期時(shí)間的需求。

RabbitMQ延遲插件【安裝windows/Linux(Docker)】

?對(duì)于以上方法存在一個(gè)問(wèn)題:死信隊(duì)列這種多個(gè)過(guò)期時(shí)間共存的情況下如果過(guò)期時(shí)間長(zhǎng)短剛好設(shè)置從小到大的添加順序時(shí),可能沒(méi)有問(wèn)題,但是這在實(shí)際應(yīng)用中不可能的。假設(shè)第一個(gè)過(guò)期時(shí)間為20s,第二個(gè)過(guò)期時(shí)間為2s,這種情況下就會(huì)出現(xiàn)2s之后第二條消息并不會(huì)執(zhí)行到期的操作,而會(huì)等到第一條的過(guò)期時(shí)間到了之后才會(huì)執(zhí)行,這樣在實(shí)際業(yè)務(wù)中就會(huì)出問(wèn)題。原因如下:

RabbitMQ延遲插件【安裝windows/Linux(Docker)】

?綜上所述:就需要安裝RabbitMq的延遲插件,新增一種交換機(jī)的模式來(lái)解決這個(gè)問(wèn)題!

下載過(guò)程:

1、首先一定一定一定要確定好自己的RabbitMq的版本是多少,這很重要,然后再官網(wǎng)打開(kāi)下載即可。如果你的rabbitmq版本是3.7.x,那就下載v3.8x版本即可,下載連接:https://www.rabbitmq.com/community-plugins.html

RabbitMQ延遲插件【安裝windows/Linux(Docker)】

RabbitMQ延遲插件【安裝windows/Linux(Docker)】

安裝過(guò)程(Windows)

1、將.ez壓縮包放到rabbitmq的plugins目錄中\(zhòng)RabbitMQ Server\rabbitmq_server-3.7.7\plugins

2、進(jìn)入sbin目錄,打開(kāi)管理員控制臺(tái),輸入如下命令,顯示類似信息即可:

rabbitmq-plugins enable rabbitmq_delayed_message_exchange

RabbitMQ延遲插件【安裝windows/Linux(Docker)】

?3、重新雙擊sbin目錄下的rabbitmq-server.bat文件,啟動(dòng)rabbitmq服務(wù)。

注意:如果前面下載的插件版本和rabbitmq版本不匹配,就會(huì)導(dǎo)致無(wú)法啟動(dòng),出現(xiàn)閃退或者顯示BOOT FAILED,刪掉剛才的插件,重新執(zhí)行上面流程即可。

4、啟動(dòng)服務(wù)之后打開(kāi)rabbitmq管理官新增交換機(jī)即可看到新的交換模式。

RabbitMQ延遲插件【安裝windows/Linux(Docker)】

安裝過(guò)程(Linux【Docker】)

前置條件是在Docker中部署過(guò)RabbitMq。

1、打開(kāi)你的遠(yuǎn)程工具,首先查看docker中已有的容器,主要是為了查看rabbitmq的容器ID

RabbitMQ延遲插件【安裝windows/Linux(Docker)】

2、將本地下載好的壓縮包傳到服務(wù)器某文件夾下,然后將其復(fù)制到Docker中的RabbitMq容器中的plugins文件夾下。

docker cp /home/rabbitmq_delayed_message_exchange-3.8.0.ez a687ef46141b:/plugins

RabbitMQ延遲插件【安裝windows/Linux(Docker)】

3、進(jìn)入容器查看該目錄下是否有該壓縮包。

進(jìn)入容器命令:(通過(guò)容器號(hào)或者容器名)

docker exec -it a687ef46141b bash

RabbitMQ延遲插件【安裝windows/Linux(Docker)】

4、同樣在容器中的命令行執(zhí)行一下命令添加插件。

rabbitmq-plugins enable rabbitmq_delayed_message_exchange

RabbitMQ延遲插件【安裝windows/Linux(Docker)】

5、退出容器,重啟該容器。

RabbitMQ延遲插件【安裝windows/Linux(Docker)】

6、在管理端即同樣可以看到新增了一種交換機(jī)模式。

RabbitMQ延遲插件【安裝windows/Linux(Docker)】

總結(jié):以上就是RabbitMQ的延遲插件的安裝過(guò)程!

基于插件的延遲隊(duì)列DEMO

成功安裝RabbitMQ的延遲插件之后,我們就可以嘗試寫(xiě)一個(gè)延遲隊(duì)列來(lái)驗(yàn)證一下是否可以解決上述問(wèn)題。

首先我們的測(cè)試環(huán)境是在一個(gè)Springboot的框架下完成!

1、最先寫(xiě)配置類

/**
 * 定義延遲交換機(jī)
 */
@Configuration
public class RabbitMQDelayedConfig {
    //隊(duì)列
    private static final String DELAYQUEUE = "delayedqueue";
    //交換機(jī)
    private static final String DELAYEXCHANGE = "delayedExchange";
    @Bean
    public Queue delayqueue(){return new Queue(DELAYQUEUE);}
    //自定義延遲交換機(jī)
    @Bean
    public CustomExchange delayedExchange(){
        Map<String, Object> arguments = new HashMap<>();
        arguments.put("x-delayed-type","direct");
        /**
         * 1、交換機(jī)名稱
         * 2、交換機(jī)類型
         * 3、是否需要持久化
         * 4、是否需要自動(dòng)刪除
         * 5、其他參數(shù)
         */
        return new CustomExchange(DELAYEXCHANGE,"x-delayed-message",true,false,arguments);
    }
    //綁定隊(duì)列和延遲交換機(jī)
    @Bean
    public Binding delaybinding(){
        return BindingBuilder.bind(delayqueue()).to(delayedExchange()).with("sectest").noargs();
    }
}

2、先寫(xiě)生產(chǎn)者

/**
 * 基于插件的延遲隊(duì)列
 * 消息生產(chǎn)者
 */
@Service
@Slf4j
public class DelayMQSender {
    @Autowired
    private RabbitTemplate rabbitTemplate;

    public void sendmsg(String message,Integer delaytime){
        log.info("當(dāng)前時(shí)間:{},發(fā)送時(shí)長(zhǎng){}信息給延遲隊(duì)列:{}",new Date().toString(),delaytime,message);
        rabbitTemplate.convertAndSend("delayedExchange","sectest",message,msg->{
            //設(shè)置發(fā)送消息的延長(zhǎng)時(shí)間 單位:ms
            msg.getMessageProperties().setDelay(delaytime);
            return msg;
        });
    }
}

3、再寫(xiě)消費(fèi)者

/**
 * 基于插件的延遲隊(duì)列
 * 消息的消費(fèi)者
 */
@Service
@Slf4j
public class DelayMQReceiver {
    @RabbitListener(queues = "delayedqueue")
    public void receivemsg(Message messages){
        String msg = new String(messages.getBody());
        log.info("當(dāng)前時(shí)間:{},接收時(shí)長(zhǎng)信息給延遲隊(duì)列:{}",new Date().toString(),msg);
    }
}

4、進(jìn)行測(cè)試

將模擬請(qǐng)求放在了一個(gè)簡(jiǎn)易的網(wǎng)頁(yè)上,點(diǎn)擊后輸出如下結(jié)果,證明當(dāng)先發(fā)送了20s延時(shí)的消息,再發(fā)送2s延時(shí)的消息,在2s后消息正常被消費(fèi),基于插件的延遲隊(duì)列完美解決了問(wèn)題。

RabbitMQ延遲插件【安裝windows/Linux(Docker)】

RabbitMQ延遲插件【安裝windows/Linux(Docker)】

【思考】:如果在實(shí)際業(yè)務(wù)場(chǎng)景中使用延遲隊(duì)列的話,那就需要服務(wù)端在消息被消費(fèi)之后主動(dòng)告訴前端消費(fèi)的結(jié)果,如果是這樣的話,那么Ajxs的通信方式是單雙工通信,只能前端主動(dòng)訪問(wèn)后端并返回結(jié)果,后端無(wú)法主動(dòng)發(fā)送消息,應(yīng)該使用Websocket來(lái)進(jìn)行通信才可,websocket是長(zhǎng)連接,不同于http的短連接,可以實(shí)現(xiàn)全雙工通信,前后端都可以主動(dòng)發(fā)送消息。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-484005.html

到了這里,關(guān)于RabbitMQ延遲插件【安裝windows/Linux(Docker)】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • [超詳細(xì)]RabbitMQ安裝延遲消息插件

    [超詳細(xì)]RabbitMQ安裝延遲消息插件

    Community Plugins — RabbitMQ https://www.rabbitmq.com/community-plugins.html 進(jìn)入以上地址以后,找到Routing里邊的rabbitmq_delayed_message_exchange然后點(diǎn)擊Releases ? 下載完成以后 ?然后解壓到plugins文件中 ?然后再sbin目錄下運(yùn)行?rabbitmq-plugins enable rabbitmq_delayed_message_exchange ?查看交換機(jī)類型中是否有

    2024年02月07日
    瀏覽(23)
  • RabbitMQ實(shí)現(xiàn)延遲消息,RabbitMQ使用死信隊(duì)列實(shí)現(xiàn)延遲消息,RabbitMQ延時(shí)隊(duì)列插件

    RabbitMQ實(shí)現(xiàn)延遲消息,RabbitMQ使用死信隊(duì)列實(shí)現(xiàn)延遲消息,RabbitMQ延時(shí)隊(duì)列插件

    假設(shè)有一個(gè)業(yè)務(wù)場(chǎng)景:超過(guò)30分鐘未付款的訂單自動(dòng)關(guān)閉,這個(gè)功能應(yīng)該怎么實(shí)現(xiàn)? RabbitMQ使用死信隊(duì)列,可以實(shí)現(xiàn)消息的延遲接收。 隊(duì)列有一個(gè)消息過(guò)期屬性。就像豐巢超過(guò)24小時(shí)就收費(fèi)一樣,通過(guò)設(shè)置這個(gè)屬性,超過(guò)了指定事件的消息將會(huì)被丟棄。 這個(gè)屬性交:x-message

    2024年02月13日
    瀏覽(104)
  • 消息隊(duì)列-RabbitMQ:延遲隊(duì)列、rabbitmq 插件方式實(shí)現(xiàn)延遲隊(duì)列、整合SpringBoot

    消息隊(duì)列-RabbitMQ:延遲隊(duì)列、rabbitmq 插件方式實(shí)現(xiàn)延遲隊(duì)列、整合SpringBoot

    1、延遲隊(duì)列概念 延時(shí)隊(duì)列內(nèi)部是有序的 , 最重要的特性 就體現(xiàn)在它的 延時(shí)屬性 上,延時(shí)隊(duì)列中的元素是希望在指定時(shí)間到了以后或之前取出和處理,簡(jiǎn)單來(lái)說(shuō), 延時(shí)隊(duì)列就是用來(lái)存放需要在指定時(shí)間被處理的元素的隊(duì)列。 延遲隊(duì)列使用場(chǎng)景: 訂單在十分鐘之內(nèi)未支付則

    2024年02月22日
    瀏覽(19)
  • Rabbitmq 延遲隊(duì)列---插件

    ? ? ? ? 解決沒(méi)法優(yōu)先發(fā)送延時(shí)時(shí)間短的消息。 插件安裝 配置類 生產(chǎn)者 消費(fèi)者

    2024年02月12日
    瀏覽(21)
  • RabbitMQ+springboot用延遲插件實(shí)現(xiàn)延遲消息的發(fā)送

    RabbitMQ+springboot用延遲插件實(shí)現(xiàn)延遲消息的發(fā)送

    延遲隊(duì)列:其實(shí)就是死信隊(duì)列中消息過(guò)期的特殊情況 延遲隊(duì)列應(yīng)用場(chǎng)景: 可以用死信隊(duì)列來(lái)實(shí)現(xiàn),不過(guò)死信隊(duì)列要等上一個(gè)消息消費(fèi)成功,才會(huì)進(jìn)行下一個(gè)消息的消費(fèi),這時(shí)候就需要用到延遲插件了,不過(guò)要線在docker上裝一個(gè)插件 前置條件是在Docker中部署過(guò)RabbitMq。 1、打開(kāi)

    2024年02月10日
    瀏覽(24)
  • RabbitMQ系列(18)--RabbitMQ基于插件實(shí)現(xiàn)延遲隊(duì)列

    RabbitMQ系列(18)--RabbitMQ基于插件實(shí)現(xiàn)延遲隊(duì)列

    1、前往RabbitMQ官網(wǎng)下載往RabbitMQ添加延遲消息的插件 RabbitMQ官網(wǎng)下載插件的網(wǎng)址:https://www.rabbitmq.com/community-plugins.html 2、下載rabbitmq_delayer_message_exchange插件(注:RabbitMQ是什么版本的,下載的插件就得是什么版本的,得對(duì)應(yīng)上,以下截圖為官方文檔的對(duì)插件版本的要求說(shuō)明)

    2024年02月16日
    瀏覽(21)
  • RabbitMQ使用延遲插件,代碼量直接減少一半!

    RabbitMQ使用延遲插件,代碼量直接減少一半!

    今天介紹一下使用RabbitMQ的延遲插件方便實(shí)現(xiàn)延遲消息的方案。 RabbitMQ 是一個(gè)由 Erlang 語(yǔ)言開(kāi)發(fā)的?AMQP(高級(jí)消息隊(duì)列協(xié)議) 的開(kāi)源實(shí)現(xiàn)。 RabbitMQ 是輕量級(jí)且易于部署的,能支持多種消息協(xié)議。 RabbitMQ 可以部署在分布式和聯(lián)合配置中,以滿足高規(guī)模、高可用性的需求。 具體特

    2024年02月09日
    瀏覽(17)
  • windows10環(huán)境下安裝RabbitMQ以及延時(shí)插件(圖文)

    windows10環(huán)境下安裝RabbitMQ以及延時(shí)插件(圖文)

    安裝轉(zhuǎn)載:https://www.cnblogs.com/saryli/p/9729591.html 插件轉(zhuǎn)載:https://blog.csdn.net/nbdclw/article/details/107441772 安裝及配置環(huán)境 第一步:下載并安裝erlang 原因: RabbitMQ 服務(wù)端代碼是使用并發(fā)式語(yǔ)言 Erlang 編寫(xiě)的,安裝 Rabbit MQ 的前提是安裝 Erlang 。 下載地址:http://www.erlang.org/downloads 根

    2024年02月07日
    瀏覽(21)
  • Docker中為RabbitMQ安裝rabbitmq_delayed_message_exchange插件

    Docker中為RabbitMQ安裝rabbitmq_delayed_message_exchange插件

    rabbitmq_delayed_message_exchange是一款向RabbitMQ添加延遲消息傳遞(或計(jì)劃消息傳遞)的插件。 插件下載地址:https://www.rabbitmq.com/community-plugins.html 歡迎訪問(wèn)我的個(gè)人博客:https://wk-blog.vip 首先需要確定我們當(dāng)前使用的RabbitMQ的版本,我們可以直接登錄Web端的管理界面查看版本 也可

    2024年02月10日
    瀏覽(17)
  • RabbitMQ常見(jiàn)問(wèn)題之延遲消息

    RabbitMQ常見(jiàn)問(wèn)題之延遲消息

    當(dāng)一個(gè)隊(duì)列中的消息滿足下列情況之一時(shí),可以成為死信( dead letter ): 消費(fèi)者使用 basic.reject 或 basic.nack 聲明消費(fèi)失敗,并且消息的 requeue 參數(shù)設(shè)置為 false 消息是一個(gè)過(guò)期消息,超時(shí)無(wú)人消費(fèi) 要投遞的隊(duì)列消息堆積滿了,最早的消息可能成為死信 如果該隊(duì)列配置了 dead

    2024年01月18日
    瀏覽(20)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包