例如:
{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用当前时间覆盖时间戳(例如当Shovel接收到消息并将铲入目标队列时)。
不幸的是,在撰写本文时不可能以这种方式配置铲子。shovel配置,包括转发消息的publish_properties
,在shovel工人启动时读取,并且只能包含静态内容。因此,无论您在{publish_properties, [{timestamp, TimeStamp}]}
中输入什么值,都将直接传递给erlang-client,后者将尝试序列化这些值(使用amqp_帧层)。
我们目前正在计划对shovel插件进行一些改进(例如集群范围内的故障转移和动态重新配置),并且您不是第一个要求此功能的人,因此我们将考虑是否支持此处的特定内容(例如为每个处理的消息设置新的时间标记)或通用方法来配置shovel worker的运行时行为。