我打算使用AMQP来允许分布式机器集合异步地向中央位置报告。我们的想法是将消息放入队列,并允许中央日志记录实体以分离的方式处理队列; 'process'只是创建或更新数据库表中的一行。
我预期的一个问题是网络抖动在消息排队过程中的影响 - 如果update
意外地在insert
前面,会发生什么,因为两个消息之间的时间是发出的小于网络抖动?
阅读AMQP规范,似乎我可以向insert
应用更高的优先级,以便他们跳过队列并首先处理。但是大概这只适用于要跳过的代理实际存在队列的情况。有没有办法在代理处施加缓冲区或延迟来吸收这种抖动,并允许在将消息传递给消费者之前制定优先权?
或者我是否必须沿着重新定序器as ActiveMQ suggests的路线走下去?
答案 0 :(得分:3)
多个发布者之间缺乏排序与网络抖动无关,这在分布式应用程序中是完全自然的事情。始终会订购来自同一发布商的消息。如果您确实需要由不同节点执行的操作的因果排序,那么重定序器或全局序列编号方案是您唯一的选择。请注意,您不能使用发件人时间戳,这是每个人似乎首先尝试的...