我有一台RabbitMQ铲子,我已经使用了一段时间。
我有一台PC'192.168.7.1'正在从另一台PC'192.168.7.6'中搜集消息。这有效,除非'192.168.7.6'重新启动,然后'192.168.7.1'上的铲子保持在RUNNING状态,并且永远不会再次接收消息,也永远不会重新连接。所以消息只是无限期缓冲'192.168.7.6'。
以下是我的配置文件的摘录,显示了铲子配置:
[{rabbit, [{disk_free_limit, {mem_relative, 1.0}}]},
{rabbitmq_shovel,
[ {shovels, [ {backbone_shovel,
[ {sources,
[ {brokers, [ "amqp://guest:guest@192.168.7.6"
]}
, {queue.declare, [
{queue, <<"backbone">>}
, durable
]}
]}
, {destinations,
[ {broker, "amqp://guest:guest@localhost"}
, {queue.declare, [
{queue, <<"backbone">>}
, durable
]}
]}
, {queue, <<"backbone">>}
, {ack_mode, on_confirm}
, {reconnect_delay, 5}
]},
当源(192.168.7.6)重启时,以下是rabbitmq铲管理插件的摘录:
backbone_shovel
running
type: network
virtual_host: /
host: 192.168.7.6
username: guest
ssl: false
type: network
virtual_host: /
host: localhost
username: guest
ssl: false
2012-11-26 11:03:51
当目标死亡时,如何强制铲子重新启动?
答案 0 :(得分:0)
回答我自己的问题,以防其他人遇到同样的问题。
这个简单的解决方案是将铲子放在客户端(PC'192.168.7.6')而不是服务器(PC'192.168.7.1')上。然后,如果客户端重新启动,则铲子重新启动。所以铲子永远不会与客户的状态不同步。