RabbitMQ是否支持按时间从队列执行进程?

RabbitMQ是否支持按时间从队列执行进程?,rabbitmq,rabbitmqctl,Rabbitmq,Rabbitmqctl,我可以在RabbitMQ中存储此时间内调用处理程序的时间吗?RabbitMQ是否支持此功能?是的,支持此功能,但仅通过额外的插件 简单地说,您需要安装rabbitmq插件来启用rabbitmq\u delayed\u message\u exchangeplugin,并将新的头添加到消息中: byte[] messageBodyBytes = "delayed payload".getBytes(); AMQP.BasicProperties.Builder props = new AMQP.

我可以在RabbitMQ中存储此时间内调用处理程序的时间吗?RabbitMQ是否支持此功能?

是的,支持此功能,但仅通过额外的插件

简单地说,您需要安装
rabbitmq插件来启用rabbitmq\u delayed\u message\u exchange
plugin,并将新的头添加到消息中:

byte[] messageBodyBytes = "delayed payload".getBytes();
AMQP.BasicProperties.Builder props = new AMQP.BasicProperties.Builder();
headers = new HashMap<String, Object>();
headers.put("x-delay", 5000);
props.headers(headers);
channel.basicPublish("my-exchange", "", props.build(), messageBodyBytes);
byte[]messageBodyBytes=“延迟的有效负载”。getBytes();
AMQP.BasicProperties.Builder props=新的AMQP.BasicProperties.Builder();
headers=newhashmap();
标题。放置(“x延迟”,5000);
道具标题(标题);
channel.basicPublish(“我的交换”,props.build(),messageBodyBytes);

因此,您需要在处理此消息后以毫秒为单位输入
x-delay
值。

也许您可以向我推荐Python中的另一种替代机制?用户何时可以将事件(日期)放入队列以进一步执行?如何从存储器中获取日期并将其放入倒计时?是否需要在每次无停止时ping数据库?您建议的这种方式不支持datetime格式的延迟时间,仅毫秒转换有什么问题?当然,如果执行时间不是几个月。。。您试图解决的任务是什么?也许每1(或5分钟)使用一次数据库和cron来检查事件是否发生就足够了。我必须提醒您,虽然RabbitMQ可能支持它,但这绝对是非标准体系结构。队列的目的是使不同的工作负载与相对恒定的处理能力相匹配。延迟等情况只会阻碍消息队列的使用。如果需要延迟,最好在应用程序逻辑中实现。