0

例如:

{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 用当前时间覆盖时间戳(就像当铲子接收到消息并将其到目标队列时一样)。

4

1 回答 1

1

不幸的是,在撰写本文时,无法以这种方式配置铲子。shovel 配置,包括publish_propertiesfor forwarded 消息,是在 shovel worker 启动时读取的,并且只能包含静态内容。因此,您输入的任何值都{publish_properties, [{timestamp, TimeStamp}]}将直接传递给 erlang-client,然后将尝试序列化这些值(使用 amqp_ 框架层)。

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

于 2013-04-23T08:44:21.070 回答