宣言のリストを使用して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]}}