RabbitMQ Shovel如何配置为用当前时间覆盖timestamp属性?

时间:2013-04-22 18:46:58

标签: erlang rabbitmq rabbitmq-shovel

例如:

{myshovel, [
    {sources, ...}
    , {destinations, ...}
    , {queue, <<>>}
    , {ack_mode, on_confirm}
    , {publish_properties, [
        {delivery_mode, 2}
        , {timestamp, now} % this is the line I need to understand how to write
    ]}
    , {publish_fields, [{exchange, <<"">>}, {routing_key, <<"">>}]}
    , {reconnect_delay, 5}
]}

我很好奇如何以某种方式编写publish_properties,以便RabbitMQ Shovel用当前时间覆盖时间戳(就像铲子收到消息并且铲起一样)目的地队列。)

1 个答案:

答案 0 :(得分:1)

不幸的是,在写作时不可能以这种方式配置铲子。当铲工人开始时,铲斗配置,包括转发消息的publish_properties,并且只能包含静态内容。因此,您放入{publish_properties, [{timestamp, TimeStamp}]}的任何值都将直接传递给erlang-client,然后转向将尝试序列化这些(使用amqp_ framing图层)。

我们目前正在计划对铲子插件进行一些改进(例如群集范围的故障转移和动态重新配置),并且您不是第一个要求此功能的人,因此我们将考虑是否有必要支持这里特定的东西(例如为每个已处理的消息设置新的时间戳)或配置铲工人的运行时行为的通用方法。