我在 /etc/rabbitmq/ 中设置: rabbitmq.conf 和 rabbitmq-env,conf
rabbit.[{rabbit, [{loopback_users, []}]}]。
并在rabbitmq-env.conf
CONFIG_FILE=/etc/rabbitmq/rabbitmq(也试过用conf e
但在日志中它显示(兔子重启后):
config file(s) : (none) 当然没有实际加载配置..有帮助吗?想法?`
我们正在构建一个解决方案,将消息发布到超时队列。TTL 过期后的消息会被推送到主队列进行重新处理。
我们正在设置计数器值,以便将针对 x 号尝试消息。重新交付的次数。
解决方案工作正常。但是场景是当头部位置最高的消息 TTL 没有过期时,其他过期的消息不会被重新发布(到主队列)。
这种理解正确吗?如果是,解决方案是什么,以便在 TTL 之后重新处理每条消息。
欣赏答案/观点。
谢谢。
我们一直在使用安装在本地开发服务器中的 RabbitMQ 开发一个应用程序。现在我们想将此应用程序移动到集成和 QA 环境,那么问题是我们是否需要在不同的环境中设置 RabbitMQ,或者是否有任何方法可以为 RabbitMQ 设置一个具有相同交换和队列名称的中心位置。
对于 rabbitMQ,可以使用 channel.queueDeclarePassive 检查队列是否存在,如果是后者则抛出异常。但是,该频道也将终止。
如何检查队列是否存在,否则通道将被终止?
谢谢
我们有两个使用 c1(在 php 中)绑定到交换 1、队列 1 和路由键 1 的消费者;和 c2(在 java 中)绑定到交换 1、队列 1 和路由密钥 2。即只有路由密钥不同,但交换和队列是相同的。
在 php 中,我们做如下绑定
$channel->queue_bind($this->queue, $this->exchange, $this->routing1);
Run Code Online (Sandbox Code Playgroud)
在java中,以下
channel.queueBind(queue, exchange, routing2);
Run Code Online (Sandbox Code Playgroud)
现在,当我们使用路由键 2 发布用于 c2 的消息时,我们观察到消息以循环方式被 c1 和 c2 接收,而不是仅被 c2 接收。
c1 和 c2 的发件人都在 php 中,c1 的发件人执行以下操作
$channel->basic_publish($message, $this->exchange, $this->routing1);
Run Code Online (Sandbox Code Playgroud)
c2 的发件人执行以下操作
$channel->basic_publish($message, $this->exchange, $this->routing2);
Run Code Online (Sandbox Code Playgroud)
我们有正确的假设吗?代码有什么问题吗?
[Edit1] 作为实验,我们更改为绑定到两个消费者和发布者的单独队列。我们观察到 c2(q2 和 r2)的消息被 c2 和 c1 都收到了……这里出了点问题。
我在 .Net 上编写了一个客户端/服务器应用程序,它使用用户名/密码/服务器对 RabbitMQ 进行身份验证。
我们的安全团队建议将其更改为证书身份验证。我在 RabbitMQ 网站和论坛上搜索过,但找不到解决方案。
如何在 .Net 客户端和服务器组件(和/或机器)中安装、配置证书以进行身份验证?在这种情况下创建连接需要什么参数?如果有的话,任何人都可以指出正确的示例资源吗?谢谢
为了避免队列读取器进程崩溃时的数据丢失,我们需要从 RabbitMQ 获取未确认的消息。对于每 1000 条消息,我们将消息数据提交到磁盘,然后这些消息可以标记为已确认和已消费。有没有办法让它们不被承认,然后专门针对我们刚刚得到的那些?例如,我们能否将它们添加到列表中,然后遍历该列表以查找消息?这是在 RabbitMQ .net 仅供参考。
我是 RabbitMQ 的新手,这让我很困惑。我已经设置了一个直接交换,并且不同的队列在这个交换上订阅了不同的路由密钥。我想要的是,如果一条消息使用一个路由键发布,它只会从一个订阅者那里消费,无论有多少队列订阅了该路由键。
当前场景:
交换(类型:直接)
-QueueA1 (receives message A from exchange with routing key of "TypeA")
-QueueA2 (also receive message A from exchange with routing key of "TypeA")
-QueueB (doesn't receive message A because it subscribes to key "TypeB")
Run Code Online (Sandbox Code Playgroud)
期望:
-QueueA1 (receives message A from exchange with routing key of "TypeA")
-QueueA2 (doesn't receive message A because it's already consumed by QueueA1)
-QueueB (doesn't receive message A because it subscribes to key "TypeB")
Run Code Online (Sandbox Code Playgroud)
我需要使用不同的交易所吗?我如何实现所需的场景?
我想在开始推送数据之前从rabbit mq 队列中删除所有消息。如何做到这一点?我正在使用https://www.npmjs.com/package/amqplib
Kafka 和 RabbitMQ 是众所周知的消息代理。我想用 Spring Boot 构建一个微服务,似乎 Spring Cloud 为他们提供了开箱即用的解决方案作为事实上的选择。我知道一些 RabbitMQ 的托盘,它有很多支持。Kafka 属于 Apache,所以应该不错。那么RabbitMQ和Kafka之间的主要目标区别是什么?考虑到这将与 Spring Cloud 一起使用。请分享您的经验和标准。提前致谢。
rabbitmq messagebroker spring-rabbit apache-kafka spring-cloud-stream