【问题标题】:RabbitMQ Shovel config with Alternate-ExchangeRabbitMQ Shovel 配置与 Alternate-Exchange
【发布时间】:2012-07-31 11:22:11
【问题描述】:

我正在尝试使用声明列表为 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 的目标交换上。如果我取出声明部分,那么配置文件将起作用。

这是错误:

=信息报告==== 2012 年 7 月 31 日::12:15:25 === 应用:rabbitmq_shovel 退出:{{invalid_shovel_configuration,call_stats_shovel, {invalid_parameter_value,目的地, {unknown_fields,'exchange.declare', [alternate_exchange]}}}, {rabbit_shovel,开始,[正常,[]]}} 类型:永久

如果我将alternate_exchange 部分排除在声明之外,我会在RabbitMQ Web 管理中收到此错误:

{{关机, {server_initiated_close,406, >}} 类型的值 'alt', {gen_server,调用, [, {称呼, {'exchange.declare',0,>,>,false, 真,假,假,假,[]}, 无,}, 无穷大]}}

【问题讨论】:

    标签: configuration rabbitmq


    【解决方案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">>}]}]}
    

    【讨论】:

      【解决方案2】:

      为了澄清上面的评论,如果是 exchange2exchange 铲子,配置将是:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-24
        • 1970-01-01
        • 1970-01-01
        • 2016-12-01
        • 2012-07-11
        • 2015-08-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多