2010-09-08 65 views
0

我打算使用AMQP允许分布式机器集合异步报告中央位置。这个想法是将消息放入队列中,并允许中央日志记录实体以解耦方式处理队列; '流程'只是创建或更新数据库表中的一行。在AMQP中实现消息优先级

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

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

或者我是否必须走下去测序器的路线as ActiveMQ suggests

回答

3

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

+0

谢谢Holger。当你说“来自同一个发布者的消息总是被订购的” - 这是否依赖于AMQP的实施? – Matt 2010-09-17 12:17:23

+0

我认为这是规范的一部分 - 其他任何事情都会令人惊讶。应该很容易找到。 – 2010-09-17 18:00:30