vai*_*dik 5 message-queue amqp rabbitmq zeromq redis
场景: 我们有多个地理位置分布的节点,我们希望队列收集该位置的消息.然后我们希望将收集到的数据从每个节点中的每个队列发送到中心位置的相应队列.在中心节点,我们将提取队列中收集的数据(来自其他节点),处理它并持久存储它.
约束:
我们的解决方案 我们已经考虑了几个解决方案,其中我将列出我们认为最好的解决方案.一种可能的解决方案(我们认为)是使用Redis来维护各处的队列,因为Redis提供持久存储.然后可能在所有地理上分离的节点上运行一个守护进程,该守护进程从队列中读取数据并将其发送到中央节点.接收数据的中心节点向它接收数据的节点发送ACK(因为数据对我们非常重要),然后在接收到ACK时,节点从队列中删除数据.当然,将存在必须接收ACK的超时时段.
问题 上面提到的解决方案(根据我们)可以正常工作,但问题是我们不想自己实现整个同步协议,原因很简单,我们可能在这里错了.我们无法在Redis中找到这种特殊的同步方式.因此我们对其他基于AMQP的队列开放,如RabbitMQ,ZeroMQ等.我们再次无法弄清楚我们是否可以使用这些解决方案来实现这一目标.
小智 4
您可以使用 RabbitMQ 来完成此操作,方法是将中央节点(或节点集群)设置为来自其他节点的消息的使用者,并使用消息确认功能。此功能意味着中心节点可以确认传送,以便其他节点仅在确认后删除消息。例如,请参阅:http://www.rabbitmq.com/tutorials/tutorial-two-python.html
如果您还有其他问题,请发送电子邮件至邮件列表rabbitmq-discuss。