文档章节

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

摩云飞
 摩云飞
发布于 2016/04/13 09:29
字数 1940
阅读 353
收藏 2
点赞 1
评论 0


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 会在删除自身前转发该值数目的消息;

 

© 著作权归作者所有

共有 人打赏支持
摩云飞
粉丝 367
博文 534
码字总数 952690
作品 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
【原创】RabbitMQ官网文档翻译 -- Clustering Guide

为了方便工作中使用,自己花费了周末空闲的时间对 RabbitMQ 的集群配置相关文档进行了翻译,鉴于自己水平有限,翻译中难免有纰漏产生,如果疑问,欢迎指出探讨。此文以中英对照方式呈现。 官...

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

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

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

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

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

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

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

官方原文:http://www.rabbitmq.com/man/rabbitmq-env.conf.5.man.html =============== 我是分割线 ================ 名字 rabbitmq-env.conf — RabbitMQ AMQP server 的默认配置文件 描述......

摩云飞
2013/01/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

我的成长记录(一)

今天突然精神抖擞,在我的博客下新开一项分类>成长记录,专门记录每隔一段时间我的一点感悟吧。因为今天才专门花时间新开这样一个分类,所以以前有过的一些感悟没有记录下来,现在已经想不起...

dtqq
10分钟前
0
0
机器学习管理平台 MLFlow

最近工作很忙,博客一直都没有更新。抽时间给大家介绍一下Databrick开源的机器学习管理平台-MLFlow。 谈起Databrick,相信即使是不熟悉机器学习和大数据的工程湿们也都有所了解,它由Spark的...

naughty
今天
0
0
idea tomcat 远程调试

tomcat 配置 编辑文件${tomcat_home}/bin/catalina.sh,在文件开头添加如下代码。    CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7829" Idea端配......

qwfys
今天
1
0
遍历目录下的文件每250M打包一个文件

#!/usr/bin/env python # -*- utf-8 -*- # @Time : 2018/7/20 0020 下午 10:16 # @Author : 陈元 # @Email : abcmeabc@163.com # @file : tarFile.py import os import tarfile import thr......

寻爱的小草
今天
1
0
expect同步文件&expect指定host和要同步的文件&构建文件分发系统&批量远程执行命令

20.31 expect脚本同步文件 expect通过与rsync结合,可以在一台机器上把文件自动同步到多台机器上 编写脚本 [root@linux-5 ~]# cd /usr/local/sbin[root@linux-5 sbin]# vim 4.expect#!/...

影夜Linux
今天
1
0
SpringBoot | 第九章:Mybatis-plus的集成和使用

前言 本章节开始介绍数据访问方面的相关知识点。对于后端开发者而言,和数据库打交道是每天都在进行的,所以一个好用的ORM框架是很有必要的。目前,绝大部分公司都选择MyBatis框架作为底层数...

oKong
今天
13
0
win10 上安装解压版mysql

1.效果 2. 下载MySQL 压缩版 下载地址: https://downloads.mysql.com/archives/community/ 3. 配置 3.1 将下载的文件解压到合适的位置 我最终将myql文件 放在:D:\develop\mysql 最终放的位...

Lucky_Me
今天
2
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

问题终结者
今天
2
0
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令

expect脚本同步文件 在一台机器上把文件同步到多台机器上 自动同步文件 vim 4.expect [root@yong-01 sbin]# vim 4.expect#!/usr/bin/expectset passwd "20655739"spawn rsync -av ro...

lyy549745
今天
1
0
36.rsync下 日志 screen

10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 screen工具 10.32/10.33 rsync通过服务同步: rsync还可以通过服务的方式同步。那需要开启一个服务,他的架构是cs架构,客户端服务...

王鑫linux
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部