簡體   English   中英

如何在spring boot中實現延遲時間rabbitmq公開消息

[英]How to public message with delay time rabbitmq implement in spring boot

我的情況。 我有准確的交付時間的隊列容器元素。 我使用spring boot的rabbitmq工具來支持。 現在我應該將消息發送到隊列,延遲時間后隊列將傳遞消息。 Rabbitmq 支持 rabbitmq-delayed-message-exchange 插件來安排消息。 但我沒有實施。 我的代碼有什么問題。 (我啟用了插件延遲)

@Bean
DirectExchange directExchange() {
    Map<String, Object> args = new HashMap<String, Object>();
    args.put("x-delayed-type", "x-delayed-message");
    return new DirectExchange("my-exchange", true, false, args);
}

@Bean
Binding binding(Queue queue, DirectExchange directExchange) {
    return BindingBuilder.bind(queue).to(directExchange).with(queueName);
}

Post Answer 按鈕應僅用於問題的完整答案。

請參閱具有適當答案的類似問題。

Spring AMQP RabbitMq 中的計划/延遲消息傳遞

你的問題在這里:

@Bean
CustomExchange delayExchange() {
    Map<String, Object> args = new HashMap<String, Object>();
    args.put("x-delayed-type", "direct");
    return new CustomExchange("my-exchange", "x-delayed-message", true, false, args);
}

另一方面,我們在 Spring AMQP 1.6 中引入了延遲交換: https ://spring.io/blog/2016/02/16/spring-amqp-1-6-0-milestone-1-and-1-5 -4-可用

更新

Binding應聲明為:

@Bean
Binding binding(Queue queue, Exchange delayExchange) {
    return BindingBuilder.bind(queue).to(delayExchange).with("foo").noargs();
}

delay發送消息,您應該執行幾乎相同的操作:

rabbitTemplate.convertAndSend("my-exchange", "spring-boot", new DaoDoa(), new MessagePostProcessor() {
        @Override
        public Message postProcessMessage(Message message) throws AmqpException {
            message.getMessageProperties().setHeader("x-delay, 15000);
            return message;
        }
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM