21-RabbitMQ延迟队列插件
RabbitMQ延迟队列插件
下载
官网
https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases
我用的是3.10.7的RabbitMQ, 但是官网没有这么新版本的, 只好下载3.10.2得了
安装
# 进入plugins目录
cd /usr/local/rabbitmq/plugins/
上传包
启动
# 启动延迟插件
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
启动成功
查看控制台
控制台中已经能查看到延迟队列类型了[x-delayed-message]
控制台测试
添加一个exchange
添加一个队列
添加绑定关系
发送消息
这个提示不用管他, 应该是兼容还有问题, 不过只是控制台, 不影响代码
等待20秒后
消息进入队列中, 这个是延迟消息, 之前的TTL消息是过期消息, 不要搞混了
SpringBoot代码集成
# 在消息转换器中设置到messageProperties中即可 @Override public Message toMessage(Object o, MessageProperties messageProperties) throws MessageConversionException { // messageProperties.setExpiration(defaultExpire); com.dance.rabbitmq.api.Message message = (com.dance.rabbitmq.api.Message) o; int delayMills = message.getDelayMills(); messageProperties.setDelay(delayMills); return messageConverter.toMessage(o,messageProperties); }