问题标签 [rabbitmqctl]
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.
rabbitmq - RabbitMQ 设置 HA 策略
我知道 HA 策略是由以下命令设置的:
我的问题似乎很基本:
我必须在每个节点上发出这个命令还是只在其中一个节点上发出这个命令?
rabbitmq - 为什么我们需要 RabbitMQ 中的路由键?
为什么我们需要路由键来将消息从交换机路由到队列?我们不能简单地使用队列名称来路由消息吗?此外,在发布到多个队列的情况下,我们可以使用多个队列名称。谁能指出我们实际上需要路由键和队列名称还不够的情况?
go - Go 中的 RabbitMQ 消费者
我正在尝试用 Go 编写一个 RabbitMQ 消费者。假设一次从队列中取出 5 个对象并处理它们。此外,假设确认是否成功处理,否则发送到死信队列5次然后丢弃,它应该无限运行并处理消费者的取消事件。我有几个问题:
- RabbitMq-go Reference中是否有
BasicConsumer
vs的概念?EventingBasicConsumer
- RabbitMQ 中有什么
Model
,RabbitMq-go 中有什么? - 如何在死信队列失败时发送对象并在之后再次重新排队
ttl
- 下面代码
consumerTag
中函数中参数的意义是什么ch.Consume
- 我们应该在这种情况下使用
channel.Get()
or吗?channel.Consume()
为了满足上述要求,我需要在以下代码中进行哪些更改。我问这个是因为我找不到 RabbitMq-Go 的像样的文档。
编辑问题:
我已经按照链接link1 link2中的建议延迟了消息的处理。但问题是,即使在 ttl 之后,消息也会从死信队列返回到其原始队列。我正在使用RabbitMQ 3.0.0
. 谁能指出是什么问题?
rabbitmq - 在 ttl 之后,死信消息没有重新排队到原始队列
我计划通过遵循这两个链接link1 link2来延迟队列中消息的处理。因此,正如链接中所建议的那样。我已经用x-dead-letter-exchange
和x-dead-letter-routing-key
args 声明了原始队列。dead-letter-queue
当消息未能被消费者处理或发生 ttl 或队列长度超过时,哪个将消息发布到所谓的消息。现在在dead-letter-queue
类似的参数中已经设置了ttl
参数。假设在ttl
超出后将消息重新发布到原始队列。但问题是它正在丢弃所有消息。
此外,这里有一个问题。如果我将失败的消息从原始队列显式发布到死信队列。然后在 ttl 之后将消息重新发布到原始队列。为什么会这样,我如何使它工作。这样死信队列会将消息重新发布到原始队列而不是丢弃。我正在使用RabbitMQ 3.0.0
.
仅供参考,我已经创建了direct
类型交换和路由密钥
rabbitmq - RabbitMQ 集群队列镜像实现高可用性:在时间 t 获取队列的主节点 ip
据我了解,RabbitMQ 集群是为了可扩展性而不是可用性,但使用镜像队列也可以实现可用性,因为如果该主服务器出现故障,则可以将最新的从服务器提升为主服务器。
从文档中:
发布到队列的消息被复制到所有从站。无论消费者连接到哪个节点,消费者都连接到主节点,从节点丢弃已在主节点确认的消息。因此,队列镜像增强了可用性,但不会在节点之间分配负载(所有参与的节点各自完成所有工作)。
因此,给定队列的节点之间的负载平衡没有意义,因为这总是会增加从联系的节点到队列的主节点的额外行程(除非我误解了某些东西)。因此,我们希望始终能够知道哪个节点是给定队列的主节点。
我并没有真正使用过 RabbitMQ,所以也许我只是在文档中遗漏了它,但似乎没有办法确定镜像队列的 master 的 ip,如果存在 master 故障并且 slave 被提升为掌握。我看到的每个来源都只是评论一个人设置初始主节点的能力,这对我来说不是很有帮助。对于任何时间 t,我如何找到给定队列的主节点 ip?
PS:将节点简单地放在负载均衡器后面似乎也很糟糕,因为如果有一些网络分区(即使在同一个 LAN 中的节点也可能发生),那么我们可能会遇到无法与队列的主人或更糟糕的是,如果您愿意,我们可能会进化出大脑分裂。
rabbitmq - 删除 RabbitMQ 的 `/` VHost 可以吗?
在我们的环境中,我们定义了几个 RabbitMQ VHost:一个 for dev
,一个 for qa
,一个 forstaging
等等。默认 VHost/
未使用,并且没有显示任何用户具有访问权限,也没有定义任何交换或队列。
可以运行rabbitmqctl delete_vhost '/'
删除此 VHost 吗?rabbitmq-server 或任何客户端是否对其赋予任何特殊含义,或者如果丢失则中断?
rabbitmq - RabbitMQ 错误:无法连接到节点:nodedown
我正在尝试使用两个 Rhel 实例进行集群。我能够相互ping通,即使我尝试使用命令empd -names
,我也可以在4369上启动并运行它。当我使用命令时,sudo rabbitmqctl join_cluster rabbit@ip-10-23-20-36
我收到以下错误,确保我首先是stop_app ..
集群节点 'rabbit@ip-10-23-20-36' 和 'rabbit@ip-10-23-209-142' ... 错误:无法连接到节点 ['rabbit@ip-10-23-209 -142']: 节点下
诊断
试图联系:['rabbit@ip-10-23-209-142']
rabbit@ip-10-23-209-142:*无法连接到 ip-10-23-209-142 上的 epmd(端口 4369):nxdomain(不存在的域)
当前节点详细信息:- 节点名称:'rabbitmq-cli-80@ip-10-23-20-36' - 主目录:/var/lib/rabbitmq - cookie 哈希:u7nRIpJ40Fd356iLbkDO6Q==
我已经尝试过的事情:
- 检查 cookie 名称,这在两个实例中都使用
sudo cat /var/lib/rabbitmq/.erlang.cookie
. - 也更改了 epmd 端口
export ERL_EMPD_PORT=4370
netstat -an |grep 4369 | grep -i listen
- 在插件管理的 GUI 中更改主机名。
更改所有者和权限也使用
/li>添加端口
/li>须藤rabbitmqctl状态
/li>
*IP 地址是示例地址。
rabbitmq - 环境变量中的 RabbitMQ 日志和 Mnesia 位置未反映?
我想将 Rabbitmq MNESIA 目录更改为/disk
folder 而不是 default /var/lib
。我做/usr/lib/rabbitmq/bin
了改变rabbitmq-env
并在重新启动后
但是当我检查状态时
删除所有更改后,它工作正常。但我希望 MNESIA 目录为 /disk。我也重新启动了实例。
tomcat - RabbitMQ 与负载均衡器(Tomcat)的连接
我有一个 RabbitMQ 服务器集群(通常是 2 个)。
我如何在集群之间进行负载平衡。TOMCAT 是否为此提供任何服务器?或者这里最好的LoadBalancer是什么?