首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在spring引导中实现具有延迟时间的公共消息

如何在spring引导中实现具有延迟时间的公共消息
EN

Stack Overflow用户
提问于 2016-02-24 03:00:38
回答 1查看 7.1K关注 0票数 7

我的案子。我有一个队列容器元素,它具有准确的传递时间。我使用rabbitmq工具在spring引导时提供支持。现在我应该将消息发送到队列中,延迟时间过后,队列将传递消息。Rabbitmq支持rabbitmq-延迟消息交换插件来调度消息.但我没有付诸实施。我的代码有什么问题。(我启用了插件延迟)

代码语言:javascript
运行
复制
@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);
}

“投递答案”按钮只适用于回答问题的完整答案。

EN

回答 1

Stack Overflow用户

发布于 2016-02-24 04:36:01

请看类似的问题,并给出适当的答案。

Scheduled/Delay messaging in Spring AMQP RabbitMq

你的问题是:

代码语言:javascript
运行
复制
@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);
}

另一方面,我们在SpringAMQP1.6:https://spring.io/blog/2016/02/16/spring-amqp-1-6-0-milestone-1-and-1-5-4-available中引入了延迟交换。

更新

Binding应声明为:

代码语言:javascript
运行
复制
@Bean
Binding binding(Queue queue, Exchange delayExchange) {
    return BindingBuilder.bind(queue).to(delayExchange).with("foo").noargs();
}

要使用delay发送消息,您应该执行几乎与您尝试过的相同的操作:

代码语言:javascript
运行
复制
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;
        }
    });
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35592427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档