1

我有一把已经使用了一段时间的 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

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

4

1 回答 1

0

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

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

于 2013-01-09T06:46:39.390 回答