0

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

我预料到的一个问题是网络抖动在消息排队过程中的影响——如果由于两条消息发出的时间小于网络抖动而update意外到达 an 前面会发生什么?insert

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

或者我是否必须按照 ActiveMQ 的建议走重新排序器的路线?

4

1 回答 1

3

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

于 2010-09-16T17:28:20.270 回答