我们使用rabbitmq消息延迟插件(rabbitmq_delayed_message_exchange)来延迟消息。为了调试和监视目的,是否可以在rabbitmq管理web界面中显示保留的/延迟的消息?
链接:https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/
再见,本
发布于 2018-06-08 13:00:32
否;延迟消息在管理UI中不可见。
作为另一种选择,您可以将消息路由到真正的队列,使用定义的TTL和死字,这将导致过期的消息被路由到最终队列。
您可以在临时队列上设置固定的TTL,也可以对单个消息使用expiration
属性。
编辑
@SpringBootApplication
public class So50760600Application {
public static void main(String[] args) {
SpringApplication.run(So50760600Application.class, args);
}
@Bean
public ApplicationRunner runner(RabbitTemplate template) {
return args -> template.convertAndSend("", "temp", "foo", m -> {
m.getMessageProperties().setExpiration("5000");
return m;
});
}
@RabbitListener(queues = "final")
public void in(String in, @Header("x-death") List<?> death) {
System.out.println(in + ", x-death:" + death);
}
@Bean
public Queue temp() {
Map<String, Object> args = new HashMap<>();
args.put("x-message-ttl", 10000); // default (max)
args.put("x-dead-letter-exchange", "");
args.put("x-dead-letter-routing-key", "final");
return new Queue("temp", true, false, false, args);
}
@Bean
public Queue finalQ() {
return new Queue("final");
}
}
和
foo:[{reason=expired, original-expiration=5000, count=1, exchange=, time=Fri Jun 08 10:43:42 EDT 2018, routing-keys=[temp], queue=temp}]
https://stackoverflow.com/questions/50760600
复制相似问题