文档章节

【原创】RabbitMQ 之 Dynamic Shovel(翻译)

摩云飞
 摩云飞
发布于 2016/04/13 09:29
字数 1940
阅读 378
收藏 2


Configuring Dynamic Shovels

Information about dynamic shovels is stored in the RabbitMQ database, along with users, permissions, queues, etc. Every shovel is defined by a corresponding named parameter.
dynamic shovel 的配置信息会被保存到 Mnesia 中,信息中会包含 user, permission, queue 等内容;
每一个 shovel 都由一个相应的命名 parameter 定义;

Parameters can be defined using rabbitmqctl, through the management HTTP API, or (with the rabbitmq_shovel_management plugin installed) through the management plugin's web UI.
可以通过 rabbitmqctl 脚本,或者通过管理插件的 HTTP API,或者通过管理插件的 Web UI(需要使能 rabbitmq_shovel_management 插件)进行 parameter 内容的定义;

A simple example
简单示例


Here we will consume messages from the queue my-queue on the local broker, and push them out to the queue another-queue on a remote broker.
下面展示的是从本地 broker 中名为 my-queue 的 queue 上消费消息后,再转发到远端 broker 上的名为 another-queue 的 queue 的用法。

rabbitmqctl rabbitmqctl set_parameter shovel my-shovel \
'{"src-uri": "amqp://", "src-queue": "my-queue", \
"dest-uri": "amqp://remote-server", "dest-queue": "another-queue"}'
rabbitmqctl (Windows) rabbitmqctl set_parameter shovel my-shovel ^
"{""src-uri"":""amqp://"", ""src-queue"": ""my-queue"", ^
""dest-uri"": ""amqp://remote-server"", ""dest-queue"": ""another-queue""}"
HTTP API PUT /api/parameters/shovel/%2f/my-shovel
{"value":{"src-uri":  "amqp://", "src-queue":  "my-queue",
          "dest-uri": "amqp://remote-server", "dest-queue": "another-queue"}}
Web UI Navigate to Admin > Shovel Management > Add a new shovel. Enter "my-shovel" next to Name, "amqp://" and "my-queue" next to Source, and "amqp://remote-server" and "another-queue" next Destination Expiry. Click Add shovel.


Configuration reference
配置参考


【Source】
src-uri
The AMQP URI(s) for the source. Mandatory. See the AMQP URI reference for information on how RabbitMQ treats AMQP URIs in general, and the query parameter reference for the Erlang client's extensions (including those for SSL and SASL) which are available to the shovel.
用于指定 source 的 AMQP URI 值,强制要求;
需要针对特殊 URI 查看手册;
需要针对 Erlang 客户端扩展查看手册;

Note that this field can either be a string, or a list of strings. If more than one string is provided, the shovel will randomly pick one URI from the list. This can be used to connect to a cluster and ensure the link will eventually find another node in the event that one fails. It's probably not a great idea to use multiple URIs that do not point to the same cluster.
该参数的值可以为 string 或者 string 列表;
如果指定的是 string 的列表,则 shovel 将会随机选取一个 URI 使用;该方式用于集群场景,解决某一个节点失效后自动找寻其他节点的情况;
使用不指向同一个 cluster 节点的多个 URI 可能会导致问题;

src-queue
The queue from which to consume. Either this or src-exchange (but not both) must be set.
If the source queue does not exist on the source broker, it will be declared as a durable queue with no arguments.
用于指定消费行为所需的 queue ;src-queue 或 src-exchange 必须设置一个(但不要求都设置);
如果在 source broker 上目标 queue 不存在,则基于该参数会创建一个没有 argument 的、具有 durable 属性的 queue ;

src-exchange
The exchange from which to consume. Either this or src-queue (but not both) must be set.
The shovel will declare an exclusive queue and bind it to the named exchange with src-exchange-key before consuming from the queue.
If the source exchange does not exist on the source broker, it will be not declared; the shovel will fail to start.
用于指定消费行为所需的 exchange ;src-queue 或 src-exchange 必须设置一个(但不要求都设置);
shovel 会在从消息消费行为开始前,先声明一个具有 exclusive 属性的 queue ,并使用 src-exchange-key 将其绑定到由该参数指定名字的 exchange 上;
如果 source exchange 在 source broker 上并不存在,则不会自动进行声明,此时 shovel 在启动时失败;

src-exchange-key
Routing key when using src-exchange
当使用 src-exchange 时所需的路由 key 值;

【Destination】
dest-uri
The AMQP URI(s) for the destination. Mandatory. See src-uri above.
用于指定 destination 的 AMQP URI 值,强制要求;

dest-queue
The queue to which messages should be published. Either this or dest-exchange (but not both) may be set. If neither is set then messages are republished with their original exchange and routing key.
If the destination queue does not exist on the source broker, it will be declared as a durable queue with no arguments.
消息要被发送到的目标 queue ;dest-queue 或 dest-exchange 可以设置一个(但不要求都设置);若两个参数都没设置,则消息会基于其原始 exchange 和 routing key 重新投递;
如果在 source broker 上由 dest-queue 指定的 queue 不存在,则基于该参数会创建一个没有 argument 的、具有 durable 属性的 queue ;

dest-exchange
The exchange to which messages should be published. Either this or dest-queue (but not both) may be set.
If the destination exchange does not exist on the source broker, it will be not declared; the shovel will fail to start.
消息要被发送到的目标 exchange ;dest-queue 或 dest-exchange 可以设置一个(但不要求都设置);
如果在 source broker 上由 dest-exchange 指定的 exchange 不存在,则不会进行创建,此时 shovel 将会启动失败;

dest-exchange-key
Routing key when using dest-exchange. If this is not set, the original message's routing key will be used.
当使用 dest-exchange 时的路由 key ;
如果没有设置该参数,将会使用原始消息中的 routing key 值;

【Shovel】
prefetch-count
The maximum number of unacknowledged messages copied over a shovel at any one time. Default is 1000.
在任意一次操作中,经由 shovel 拷贝出的、尚未进行确认的最大消息数量;默认为 1000 条;

reconnect-delay
The duration (in seconds) to wait before reconnecting to the brokers after being disconnected at either end. Default is 1.
被任意一端断开后,重连 broker 前的等待时间(以秒为单位);默认为 1 秒;

publish-properties
Properties to overwrite when shovelling messages. Setting headers this way is not currently supported. Default is {}.
用于改写被 shovel 的消息的属性的设置;针对 header 的设置目前尚不支持;默认为 {} ;

add-forward-headers
Whether to add x-shovelled headers to the shovelled messages indicating where they have been shovelled from and to. Default is false.
是否添加 x-shovelled 头到被 shovel 的消息中,以表明该消息被从哪里 shovel 到了哪里;默认为 false ;

ack-mode
Determines how the shovel should acknowledge messages. If set to on-confirm (the default), messages are acknowledged to the source broker after they have been confirmed by the destination. This handles network errors and broker failures without losing messages, and is the slowest option.
决定 shovel 如何针对消息进行确认;
如果设置了 on-confirm (默认值),那么只有当消息被 destination broker 确认后,才会向 source broker 进行确认;
通过该设置可以解决网络错误或者 broker 失效导致的消息丢失问题;该方式下的消息处理速度当然最慢;

If set to on-publish, messages are acknowledged to the source broker after they have been published at the destination. This handles network errors without losing messages, but may lose messages in the event of broker failures.
如果设置了 on-publish ,那么当消息被发送到了 destination broker 后,就会向 source broker 进行确认;
该方式能够处理由于网络错误导致的消息丢失,但遇到 broker 失效的情况则有可能会丢失消息;

If set to no-ack, message acknowledgements are not used. This is the fastest option, but may lose messages in the event of network or broker failures.
如果设置了 no-ack ,则不使用任何消息确认机制;这种设置在消息处理速度上最快,但是在发生网络错误或者 broker 失效问题是,丢消息的可能性大大增加;

delete-after
Determines when (if ever) the shovel should delete itself. This can be useful if the shovel is being treated as more of a move operation - i.e. being used to move messages from one queue to another on an ad hoc basis.
该参数用于确定(若设置了的话)何时 shovel 应该删除自身;
该功能在将 shovel 作为用于搬运的操作时非常有用,即用于在 ad-hoc 场景下将消息从一个 queue 中搬移到另一个 queue 中;

The default is never, meaning the shovel should never delete itself.
该参数默认值为 never ,意味着 shovel 永远不要删除自身;

If set to queue-length then the shovel will measure the length of the source queue when starting up, and delete itself after it has transfered that many messages.
如果设置了 queue-length 参数,则 shovel 会在启动的时候检测 source queue 的长度,并在将这些消息全数转发后删除自身;

If set to an integer, then the shovel will transfer that number of messages before deleting itself.
如果设置为整数值,则 shovel 会在删除自身前转发该值数目的消息;

 

© 著作权归作者所有

共有 人打赏支持
摩云飞
粉丝 368
博文 534
码字总数 952694
作品 0
徐汇
程序员
【原创】RabbitMQ 之 Plugins(翻译)

为了方便工作中使用,对 RabbitMQ 的【插件】相关文档进行了翻译,鉴于自己水平有限,翻译中难免有纰漏产生,如果疑问,欢迎指出探讨。此文以中英对照方式呈现。 官方原文:http://www.rabb...

摩云飞
2012/12/12
0
0
【原创】rabbitmq-plugins用户手册(翻译)

为了方便工作中使用,周末抽空对 rabbitmq-plugins 用户手册进行了翻译,鉴于自己水平有限,翻译中难免有纰漏产生,如果疑问,欢迎指出探讨。 官方原文:http://www.rabbitmq.com/man/rabbi...

摩云飞
2012/11/12
0
0
RabbitMQ管理插件的安装

先安装rabbitmq-server这里就不写了,之前有篇文章里有相关步骤:RabbitMQ的安装与配置 如果/etc/rabbitmq不存在会报如下错误: Error: {cannotwriteenabledpluginsfile,”/etc/rabbitmq/ena...

openthings
2015/05/21
0
0
RabbitMQ 3.7.5-beta.3 发布,带来多处 bug 修复

RabbitMQ 3.7.5-beta.3 发布,此版本是维护版本的预览版,主要带来了多处 bug 修复,涉及模块包括: Core Server CLI Tools Management Plugin LDAP Plugin Shovel Plugin Peer Discovery A...

雨田桑
04/30
0
0
RabbitMQ 3.7.5-rc.1 发布,bug 修复版本

RabbitMQ 3.7.5-rc.1 发布,此版本是维护版本的候选版本,主要是对一些 bug 进行了修复。 更新涉及模块包括: Core Server CLI Tools Management Plugin Federation Plugin LDAP Plugin Shov...

雨田桑
05/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

面向对象类之间的关系

面向对象类之间的关系:is-a、has-a、use-a is-a关系也叫继承或泛化,比如大雁和鸟类之间的关系就是继承。 has-a关系称为关联关系,例如企鹅在气候寒冷的地方生活,“企鹅”和“气候”就是关...

gackey
27分钟前
1
0
读书(附电子书)|小狗钱钱之白色的拉布拉多

关注公众号,在公众号中回复“小狗钱钱”可免费获得电子书。 一、背景 之前写了一篇文章 《小狗钱钱》 理财小白应该读的一本书,那时候我才看那本书,现在看了一大半了,发现这本书确实不错,...

tiankonguse
50分钟前
1
0
Permissions 0777 for ‘***’ are too open

异常显示: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ......

李玉长
52分钟前
3
0
区块链10年了,还未落地,它失败了吗?

导读 几乎每个人,甚至是对通证持怀疑态度的人,都对区块链的技术有积极的看法,因为它有可能改变世界。然而,区块链技术问世已经10年了,我们仍然没有真正的用上区块链技术。 几乎每个人,甚...

问题终结者
今天
2
0
20180921 su与sudo命令、限制root用户通过ssh远程登录

su 命令 用户切换。 su # 切换到root用户su username # 切换到username用户# su 后面加-时,会初始化当前用户的各种环境su - username # 指定用户执行某些命令 su - -c "touch /tm...

野雪球
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部