在AMQP中实现消息优先级

时间:2010-09-08 16:55:54

标签: message-queue amqp

我打算使用AMQP来允许分布式机器集合异步地向中央位置报告。我们的想法是将消息放入队列,并允许中央日志记录实体以分离的方式处理队列; 'process'只是创建或更新数据库表中的一行。

我预期的一个问题是网络抖动在消息排队过程中的影响 - 如果update意外地在insert前面,会发生什么,因为两个消息之间的时间是发出的小于网络抖动?

阅读AMQP规范,似乎我可以向insert应用更高的优先级,以便他们跳过队列并首先处理。但是大概这只适用于要跳过的代理实际存在队列的情况。有没有办法在代理处施加缓冲区或延迟来吸收这种抖动,并允许在将消息传递给消费者之前制定优先权?

或者我是否必须沿着重新定序器as ActiveMQ suggests的路线走下去?

1 个答案:

答案 0 :(得分:3)

多个发布者之间缺乏排序与网络抖动无关,这在分布式应用程序中是完全自然的事情。始终会订购来自同一发布商的消息。如果您确实需要由不同节点执行的操作的因果排序,那么重定序器或全局序列编号方案是您唯一的选择。请注意,您不能使用发件人时间戳,这是每个人似乎首先尝试的...