1

宣言のリストを使用してRabbitMQ用のShovelプラグインを構成しようとしています。リモートエクスチェンジを作成したときに、代替エクスチェンジを持つように構成しました。

私の問題は、shovelの構成ファイルにこの引数を含めることができないため、起動時にRabbitMQがクラッシュすることです。

これは私の設定がどのように見えるかです:

[
    {mnesia, [{dump_log_write_threshold, 100}]},
    {rabbit, [{vm_memory_high_watermark, 0.4}]},
    {rabbitmq_shovel,
        [{shovels,
            [{call_stats_shovel,
                [{sources, [{broker, "amqp://guest:guest@localhost:5672/test"},
                    {declarations,
                        [{'queue.declare', [{queue, <<"incoming">>}, durable]},
                        {'exchange.declare',[{exchange, <<"my-exchange-topic">>},{type, <<"topic">>},durable]},
                        {'queue.bind',[{exchange, <<"my-exchange-topic">>},{queue, <<"incoming">>}]}
                ]}]},
                {destinations, [{broker, "amqp://guest:guest@172.16.3.162:5672/blah"},
                    {declarations,
                    [
                        {'queue.declare',[{queue, <<"billing">>},durable]},
                        {'exchange.declare',[{exchange, <<"my-exchange-topic">>},{type, <<"topic">>},{alternate_exchange, <<"alt">>}, durable]},
                        {'queue.bind',[{exchange, <<"my-exchange-topic">>},{queue, <<"billing">>},{routing_key, <<"physical">>}]}
                    ]}
                ]},
                {queue, <<"incoming">>},
                {ack_mode, no_ack},
                {publish_properties, [{delivery_mode, 2}]},
                {reconnect_delay, 5}
                ]}
            ]
        }]
    }
].

問題は、my-exchange-topicと呼ばれる宛先交換にあります。宣言セクションを削除すると、構成ファイルが機能します。

これはエラーです:

= INFO REPORT====2012年7月31日::12:15:25===アプリケーション:rabbitmq_shovelが終了しました:{{invalid_shovel_configuration、call_stats_shovel、{invalid_parameter_value、destinations、{unknown_fields、'exchange.declare'、[alternate_exchange] }}}、{rabbit_shovel、start、[normal、[]]}}タイプ:永続的

宣言からalternate_exchangeセクションを除外すると、RabbitMQWeb管理で次のエラーが発生します。

{{shutdown、{server_initiated_close、406、<< "PRECONDITION_FAILED --inequivalent arg'alternate-exchange' for exchange'my-exchange-topic' in vhost'blah':received none but current is the value'alt' of type'longstr '">>}}、{gen_server、call、[<0.473.0>、{call、{' exchange.declare'、0、<<" my-exchange-topic ">>、<<" topic">> 、false、true、false、false、false、[]}、none、<0.444.0>}、infinity]}}

4

2 に答える 2

1

追加の引数を必要とする交換とキューを構成する方法を検討している人は、次のようにします。

{'exchange.declare',[{exchange, <<"my-exchange-topic">>},{type, <<"topic">>}, durable, {arguments, [{<<"alternate-exchange">>, longstr, <<"alternate-exchange">>}]}  ]},

キューでも同様のことができます。

{'queue.declare',[{queue, <<"my-queue">>},durable, {arguments, [{<<"x-dead-letter-exchange">>, longstr, <<"dead-letter-queue">>}]}]}
于 2012-08-23T15:55:56.550 に答える
0

上記のコメントを明確にするために、exchange2exchangeショベルの場合、構成は次のようになります。

{'exchange.declare',[{exchange, <<"my-exchange-topic">>},{type, <<"topic">>}, durable, {arguments, [{<<"alternate-exchange">>, longstr, <<"name-of-your-alternate-exchange">>}]}  ]},
于 2015-09-25T12:14:09.280 に答える