2013-04-22 91 views
0

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

{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的铲覆盖与当前时间的时间戳(当铲接收消息并它放到目标队列)。

回答

1

不幸的是,在撰写本文时,不可能以这种方式配置挖掘机。挖铲工作人员开始时会读取铲斗配置(包括用于转发消息的publish_properties),并且只能包含静态内容。因此,无论您将什么值放入{publish_properties, [{timestamp, TimeStamp}]}都将直接传递给erlang-客户端,这将会尝试将这些值(使用amqp_ framing层)串行化。

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

+0

非常有帮助,我有点想法,但想确保。目前,我正在通过广域网使用铲子,并试图锁定点之间的延迟时间并给出相应的指标。这将是非常有用的。 – dlamotte 2013-04-23 13:13:53