AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁(yè) > 科技  > 軟件

RabbitMQ代碼篇之過(guò)期時(shí)間,死信隊(duì)列,延遲隊(duì)列,優(yōu)先級(jí)隊(duì)列的基本使用

來(lái)源: 責(zé)編: 時(shí)間:2024-03-18 09:38:28 188觀看
導(dǎo)讀這篇是 代碼篇 ,略過(guò) Direct,F(xiàn)anout,Topic 這幾種基本隊(duì)列的使用介紹,但是 Github 倉(cāng)庫(kù)上可以查看到的。圖片<( ̄︶ ̄)↗[GO!]沖沖沖~死信隊(duì)列死信是指有這三個(gè)特點(diǎn)的消息消息被拒絕,且沒(méi)有重新入隊(duì)(投遞)消息過(guò)期消息隊(duì)列滿(mǎn)了// n

這篇是 代碼篇 ,略過(guò) Direct,F(xiàn)anout,Topic 這幾種基本隊(duì)列的使用介紹,但是 Github 倉(cāng)庫(kù)上可以查看到的。4mC28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片4mC28資訊網(wǎng)——每日最新資訊28at.com

<( ̄︶ ̄)↗[GO!]4mC28資訊網(wǎng)——每日最新資訊28at.com

圖片沖沖沖~4mC28資訊網(wǎng)——每日最新資訊28at.com

死信隊(duì)列

死信是指有這三個(gè)特點(diǎn)的消息4mC28資訊網(wǎng)——每日最新資訊28at.com

  • 消息被拒絕,且沒(méi)有重新入隊(duì)(投遞)
  • 消息過(guò)期
  • 消息隊(duì)列滿(mǎn)了
// nack 返回 false,并放棄重新回到隊(duì)列channel.basicNack(deliveryTag, false, false);//拒絕,不重新入隊(duì)列channel.basicReject(deliveryTag, false);

死信交換機(jī) —— DLX:Dead-Letter-Exchange4mC28資訊網(wǎng)——每日最新資訊28at.com

@Beanpublic DirectExchange directExchange2() {    /**     * 交換機(jī)名,后面兩個(gè)是默認(rèn)值就:持久化,不自動(dòng)刪除     */    return new DirectExchange(RabbitMQConstants.DIRECT_EXCHANGE2, true, false);}@Beanpublic Queue directQueue2() {    return QueueBuilder            .durable(RabbitMQConstants.DIRECT_QUEUE2)            .deadLetterExchange(RabbitMQConstants.DLX_EXCHANGE)            .deadLetterRoutingKey(RabbitMQConstants.DLX_ROUTING_KEY)            .build();}/** * 將隊(duì)列綁定到交換機(jī)上 * * @return */@Beanpublic Binding directBinding2() {    return BindingBuilder.            bind(directQueue2()).            to(directExchange2()).            with(RabbitMQConstants.DIRECT_BINDING_KEY2);}

過(guò)期時(shí)間

兩種設(shè)置方式4mC28資訊網(wǎng)——每日最新資訊28at.com

  • 創(chuàng)建隊(duì)列時(shí)設(shè)置,消息會(huì)被排序加入到隊(duì)列頭部,短的在前
  • 發(fā)送消息時(shí)設(shè)置,時(shí)間到期不會(huì)立刻刪除,而是在推送消息時(shí)刪除

同時(shí)設(shè)置的話,過(guò)期時(shí)間已短的為準(zhǔn)4mC28資訊網(wǎng)——每日最新資訊28at.com

/** * 創(chuàng)建隊(duì)列時(shí)設(shè)置 * @return */@Beanpublic Queue ttlQueue() {    Map<String, Object> args = new HashMap<>();    //設(shè)置消息過(guò)期時(shí)間    args.put("x-message-ttl", 5000);    //設(shè)置死信交換機(jī)    args.put("x-dead-letter-exchange", RabbitMQConstants.DLX_EXCHANGE);    //設(shè)置死信 routing_key    args.put("x-dead-letter-routing-key", RabbitMQConstants.DLX_ROUTING_KEY);    return new Queue(RabbitMQConstants.TTL_QUEUE, true, false, false, args);}
/** * 發(fā)送消息時(shí)設(shè)置 * @return */public void sendMessage2() throws JsonProcessingException {    User user = new User();    ObjectMapper objectMapper = new ObjectMapper();    byte[] bytes = objectMapper.writeValueAsBytes(user);    // 10 s 后過(guò)期    Message message =            MessageBuilder.withBody(bytes)                    .setExpiration("10000").build();    // 交換機(jī),路由鍵,信息    rabbitTemplate.convertAndSend(            RabbitMQConstants.DIRECT_EXCHANGE2,            RabbitMQConstants.DIRECT_ROUTING_KEY2,            message    );}

效果演示

圖片圖片4mC28資訊網(wǎng)——每日最新資訊28at.com

隊(duì)列 5 秒延遲的效果4mC28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片4mC28資訊網(wǎng)——每日最新資訊28at.com

延遲隊(duì)列

兩種方案實(shí)現(xiàn)4mC28資訊網(wǎng)——每日最新資訊28at.com

  • 利用 死信隊(duì)列+過(guò)期時(shí)間 去處理,消息過(guò)期被轉(zhuǎn)發(fā)到死信交換機(jī),死信交換機(jī)路由到死信隊(duì)列進(jìn)行處理
  • 使用插件 rabbitmq_delayed_message_exchange

插件可以在這里找到

本文鏈接:http://www.tebozhan.com/showinfo-26-76494-0.htmlRabbitMQ代碼篇之過(guò)期時(shí)間,死信隊(duì)列,延遲隊(duì)列,優(yōu)先級(jí)隊(duì)列的基本使用

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 關(guān)于Java程序服務(wù)預(yù)熱那些事

下一篇: 想進(jìn)阿里?先搞懂Spring Bean的循環(huán)依賴(lài)!

標(biāo)簽:
  • 熱門(mén)焦點(diǎn)
Top