问题标签 [rabbitmq-shovel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3747 浏览

rabbitmq - 如何通过 http api 获取rabbitmq-shovel 的状态

使用“rabbitmqctl eval 'rabbit_shovel_status:status().'”我可以在我的 rabbitmq 服务器中获取铲子的状态。

我激活了模块“rabbitmq_shovel”和“rabbitmq_shovel_management”。

我使用 HTTP API 创建了一些动态铲子,我遇到的问题是,我希望能够使用 HTTP API 获取铲子的状态,但我找不到这样做的方法。

有没有办法使用 HTTP API 做到这一点?或者我应该使用'rabbitmqctl eval ...'?

我不想使用 rabbitmqctl,因为我想在我自己的 API 中公开这些数据,所以我的应用程序应该能够访问它,而不必创建一个“exec”。

0 投票
1 回答
1045 浏览

queue - RabbitMQ 铲子消息率

我有一个带有以下参数的队列:

  • x-ha-政策:全部
  • 耐用:真实

配置了一个静态铲子来处理这个队列,另一个服务器被设置为目标。铲子配置:

我的问题是“queuename”队列的传递/获取和确认速率永远不会超过 50/s,因此会导致队列中的大量堆积(700 万)。

我想知道更改 prefetch_count 是否会增加消息率?

还为队列的消费者启用了“需要确认”。其默认值为:on_confirm。如果消息被强制确认,是否会限制消息速率?

0 投票
1 回答
1109 浏览

rabbitmq - RabbitMQ 铲子插件是否保留消息顺序?

我使用 RabbitMQ 铲子插件(动态铲子,见下文)通过不可靠的 WAN 链接在两个 RabbitMQ 代理之间提供单向消息传递。我在 RabbitMQ 服务器日志中看到定期连接丢失。

两个代理的 AMQP 设置的相关部分是相同的:一个交换(扇出,持久)和一个队列(持久)。消费应用程序要求接收消息的顺序与它们在发送端产生的顺序相同。

观察到的行为似乎表明情况并非如此,可能是由于重新传输等。RabbitMQ 铲子插入是否保留消息排序而不会丢失消息?需要哪些配置选项?

铲声明

0 投票
1 回答
1768 浏览

rabbitmq - RabbitMQ 无法加入集群并启用插件

我尝试为我的 RabbitMQ 设置集群,但是当加入集群时出现错误我不知道为什么,花了一天时间寻找解决方案但仍然没有希望。(我正在使用 Window 并使用所有默认选项进行安装)。

问题1: 无法加入集群: 我有2台电脑安装Rabbit:

  • 兔子@HOANGQUOCVI2118
  • ALO-PC

我可以远程登录 ALO-PC 的端口,也可以关闭防火墙,但无法通过此命令加入集群:

c:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.5.6\sbin>rabbitmqctl join_cluster rabbit@ALO-PC Clustering node rabbit@HOANGQUOCVI2118 with 'rabbit@ALO-PC' ...

错误:无法连接到节点 ['rabbit@ALO-PC']:nodedown

诊断

试图联系:['rabbit@ALO-PC']

rabbit@ALO-PC: * 连接到 ALO-PC 上的 epmd(端口 4369) * epmd 报告节点 'rabbit' 在端口 25672 上运行 * TCP 连接成功但 Erlang 分发失败 * 建议:主机名不匹配?* 建议:cookie 设置是否正确?* 建议:Erlang 发行版是否使用 TLS?

当前节点详细信息: - 节点名称:'rabbitmq-cli-248@HOANGQUOCVI2118' - 主目录:C:\Users\quocviet - cookie 哈希:0B/cSw97VtsfE3zp8Y+Jbg==

问题2: 无法启用插件:

联邦:

c:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.5.6\sbin>rabbitmq-plugins 启用 rabbitmq_federation

以下插件已启用:
rabbitmq_federation

将插件配置应用于 rabbit@HOANGQUOCVI2118... 失败。错误:{noproc, {gen_server,call, [rabbit_sup, {start_child, {rabbit_federation_sup, {rabbit_federation_sup,start_link,[]}, transient,4294967295,worker, [rabbit_federation_sup]}}, infinity]}}

铲子插件:

c:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.5.6\sbin>rabbitmq-plugin ns disable rabbitmq_shovel 以下插件已被禁用:
rabbitmq_shovel

将插件配置应用于 rabbit@HOANGQUOCVI2118... 失败。错误:noproc

请帮我解决这个案子。

0 投票
1 回答
763 浏览

rabbitmq - RabbitMQ 铲丢消息(尝试模拟网络问题)

我正在使用 RabbitQM 服务器构建集群。我使用铲子插件将消息从一个rabbitmq传递到其他(不同的机器)

它工作正常。但是我想测试当服务器之间没有网络连接时它的行为。

在每台服务器上,我都有本地队列。我将消息推送到它,然后铲子将消息传递到远程rabbitmq队列

为了模拟我所做的网络问题

禁用与远程服务器 xx.xx.xx.xx 的连接

然后我将消息推送到本地队列,它从队列中消失但不在远程服务器上!怎么会这样?在从队列中删除消息之前,铲子是否检查远程队列是否可用?

如何使其正常工作?我希望铲子不会从 q 队列中删除消息,直到确保 ti si 传递到远程队列。

0 投票
1 回答
3467 浏览

java - 如何确保我的应用程序与 RabbitMQ 的连接是健康的?

我需要为我的 Web 应用程序(tomcat 战争)设置一个 keepalive 端点。我的 WAF 会定期对端点进行采样,以确保应用程序健康。

一个健康的应用程序意味着应用程序已启动并且与 RabbitMQ 服务器(版本 3.5.3 /spring-rabbit 1.4.5)的通信已启动且功能正常。

我将向我的 WAF 打开一些 REST API,以验证连接状态。
阅读文档,我对如何在功能上实现这一点非常迷茫
我注意到一些可能有帮助的功能,但我不确定:

  1. 启用自动恢复并使用RecoveryListener并确保上次恢复没有失败。
  2. 配置HeartBeat并找出一种在“连接中断”时收到通知的方法</li>
  3. 创建一些 Heath Queue 并使用像Shovel这样的插件来回显消息,如果我没有得到任何响应,我认为队列已关闭
0 投票
1 回答
747 浏览

rabbitmq - RabbitMQ 铲除默认 uri 以外的任何内容

我使用的是 RMQ 版本 3.6.0。

使用默认的 'amqp://' uri 为源和目标创建铲子,默认的 '/' v-host 工作正常。

但是,每当我使用不同的虚拟主机或不同的用户时,它都不起作用。这包括还使用 %2F 显式声明默认 v-host。我为默认 v-host 和另一个 v-host 尝试了使用和不使用 %2F。我尝试从默认虚拟主机转到新虚拟主机,反之亦然。我尝试了使用和不使用用户名、密码并使用简单密码创建了一个管理员帐户,以排除密码的 % 编码问题。我尝试使用和不使用主机(域名)。我尝试了使用和不使用集群名称。我尝试使用和不使用端口(5672)。

尽管尝试了所有这些组合,但由于 badmatch 错误,铲子仍停留在启动状态:

crasher: initial call: gen:init_it/6 pid: <0.27614.7287> registered_name: [] exception exit: {{badmatch,{error,etimedout}}, [{rabbit_shovel_worker,make_conn_and_chan,1, [{file,"src/rabbit_shovel_worker.erl"},{line,236}]}, {rabbit_shovel_worker,handle_cast,2, [{file,"src/rabbit_shovel_worker.erl"},{line,62}]}, {gen_server2,handle_msg,2, [{file,"src/gen_server2.erl"},{line,1049}]}, {proc_lib,init_p_do_apply,3, [{file,"proc_lib.erl"},{line,240}]}]} in function gen_server2:terminate/3 (src/gen_server2.erl, line 1160) ancestors: [<0.3813.7286>,<0.536.0>,rabbit_shovel_dyn_worker_sup_sup, rabbit_shovel_sup,<0.532.0>] messages: [] links: [<0.3813.7286>] dictionary: [{random_seed,{26721,25702,22425}}] trap_exit: false status: running heap_size: 987 stack_size: 27 reductions: 1577 neighbours:

0 投票
0 回答
465 浏览

docker - RabbitMQ Shovel - 无法使用 docker 在不同的机器上连接

我在机器 A 上有以下 RabbitMQ 配置:

机器 A 上带有 Shovel 插件的 RabbitMQ 位于 docker 网络中,机器 B 上的 RabbitMQ 位于另一个 docker 网络中。在机器 B 上,端口 5672 已打开。将一些消息发送到第一个 RabbitMQ 后,它不会将其发送到第二个。

有任何想法吗?是兔子的问题还是机器的问题?

0 投票
0 回答
110 浏览

rabbitmq - 我可以使用 rabbitmq 在 WAN 上实现一致性和分区容错吗

RabbitMQ 为分布式系统提供了两种选择——Federation 和/或 shovel,它们有利于可用性(AP)而不是一致性(CP)(以及在 WAN 上工作);集群支持一致性 (CP) 而不是可用性 (AP)(但不适用于 WAN)。

有什么方法可以设置 RabbitMQ 和插件以支持 CP 并允许通过 WAN 进行镜像?

0 投票
1 回答
1352 浏览

c# - RabbitMQ:根据消息路由键从一个队列铲到多台服务器

我的场景:

我们正在使用 RabbitMQ 将消息广播到网络中大约 300 台其他计算机。我们在 Windows Server、C#.Net 客户端 (EasyNetQ) 上使用 RabbitMQ

基本解决方案是为每台目标计算机分配一个路由密钥,定义一个交换并将每个路由密钥绑定到一个队列,并为每个队列定义一个铲子到目标服务器。在这种情况下,我们有 1 个交换器、300 个队列和 300 个铲子。

问题陈述:这么多的铲子和队列的维护和管理很困难,并且给rabbitmq带来了更多的负载。

问题:我认为有一种简单的方法可以做到这一点:比如定义一个交换、一个队列和基于路由的铲子(300)。你推荐什么解决方案?

提前致谢。