RabbitMQ铲冰冻'跑步'

时间:2012-11-26 03:57:15

标签: rabbitmq

我有一台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

当目标死亡时,如何强制铲子重新启动?

1 个答案:

答案 0 :(得分:0)

回答我自己的问题,以防其他人遇到同样的问题。

这个简单的解决方案是将铲子放在客户端(PC'192.168.7.6')而不是服务器(PC'192.168.7.1')上。然后,如果客户端重新启动,则铲子重新启动。所以铲子永远不会与客户的状态不同步。