這篇是 代碼篇 ,略過(guò) Direct,F(xiàn)anout,Topic 這幾種基本隊(duì)列的使用介紹,但是 Github 倉(cāng)庫(kù)上可以查看到的。
圖片
<( ̄︶ ̄)↗[GO!]
沖沖沖~
死信是指有這三個(gè)特點(diǎn)的消息
// nack 返回 false,并放棄重新回到隊(duì)列channel.basicNack(deliveryTag, false, false);//拒絕,不重新入隊(duì)列channel.basicReject(deliveryTag, false);
死信交換機(jī) —— DLX:Dead-Letter-Exchange
@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);}
兩種設(shè)置方式
同時(shí)設(shè)置的話,過(guò)期時(shí)間已短的為準(zhǔn)
/** * 創(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 );}
圖片
隊(duì)列 5 秒延遲的效果
圖片
兩種方案實(shí)現(xiàn)
插件可以在這里找到
本文鏈接: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