问题标签 [rabbitmq]

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 投票
1 回答
1167 浏览

erlang - Erlang AMQP 客户端库

是否有与 RabbitMQ 无关的 Erlang AMQP客户端库?

我知道rabbitmq-erlang-client,但我想要一些更解耦的东西......在为Debian存储库打包这些东西时会感到痛苦,安装等......

0 投票
2 回答
7388 浏览

java - 使用 RabbitMQ(Java 客户端),有没有办法确定消费期间网络连接是否关闭?

我正在使用 Java 客户端在 RHEL 5.3 上使用 RabbitMQ。我有 2 个节点(机器)。Node1 正在使用 Java 帮助程序类 QueueingConsumer 从 Node2 上的队列中消费消息。

如果接口在 Node1 或 Node2 上关闭(例如 ifconfig eth1 down),客户端(上图)永远不会知道网络不再存在。RabbitMQ 是否在 Java 客户端上提供某种类型的配置,可用于确定连接是否已消失。关闭 Node2 上的 RabbitMQ 服务器将触发 ShutdownSignalException,可以捕获该异常,并且应用程序可以进入重新连接循环。但是关闭接口不会导致任何类型的异常发生,因此代码将在 consumer.nextDelivery() 上永远等待。

我也尝试过使用这个调用的超时版本。例如

但似乎这总是返回 true (即使接口已关闭)。我假设在连接上注册 ShutdownListener 会产生相同的结果,但还没有尝试过。

有没有办法配置某种心跳,或者你只需​​要编写自定义租约逻辑(例如“我现在在这里”)才能让它工作?

0 投票
2 回答
1561 浏览

ruby-on-rails - 哪个持久和轻量级的跨域(> 2)数据交换与 Rails 集成的队列消息传递?

我正在寻找适合我需要的消息传递系统。你能帮助我吗 ?

  • 暂时不会有海量数据需要处理,但以后不想被限制……
  • 这些机器不仅仅是网络服务器,因此消息传递工具应该是轻量级的,即使处理速度不是很快。
  • 当服务器上的某些数据发生变化时,所有服务器都应该拥有该信息并在本地对其进行处理。(我应该在每个服务器上为每个服务器创建一个频道吗?)
  • 前端是在 Rails 上编写的,所以为了简化开发,有一个 gem / 插件来管理通信和发送的数据是很重要的。

此时 :

  • RabbitMQ + workling 似乎符合我的需要。这会是一个正确的选择吗?
  • ActiveMQ让我害怕,因为Java(我真的不太了解Java,但在我看来是大CPU消耗者)
  • 其他人似乎没有他们那么成熟。

使用这种技术可能会有很多开发,所以我不能走错路!

谢谢你的帮助。

0 投票
1 回答
6092 浏览

python - 删除 celery 中的 Task / PeriodicTask

如何删除 celery 中的常规任务或 PeriodicTask?

0 投票
1 回答
361 浏览

c - 有人可以告诉使用 OpenAMQ C lib 连接到 rabbitMQ 服务器的步骤吗

我正在尝试在我的 C/C++ 应用程序中使用 RabbitMQ,到目前为止,我已经意识到使用 OpenAMQ 的 C 客户端是唯一的选择,但 OpenAMQ 是 AMQP 0-9,而 RabbitMQ 服务器是 0-8。我在某处读到,人们成功地对 RabbitMQ 进行了微小的更改,以使其与 OpenAMQ C lib 一起工作。有经验的人可以对此有所了解。

0 投票
4 回答
8746 浏览

windows - 如何在 Windows 上安装 rabbitmq 服务器

如何在 Windows 上安装 RabbitMQ?

0 投票
3 回答
3682 浏览

rabbitmq - 如何在 Windows 上构建 rabbitmq C 客户端库

有人可以了解如何在 Windows 上构建 rabbitmq C 客户端库吗?

0 投票
1 回答
244 浏览

design-patterns - 消息模式问题

进程 A 正在计算对象 a1、a2、a3 等的值,并将结果发送到中间件队列 (RabbitMQ)。消费者读取队列并进一步处理这些结果。进程 A 必须定期发送这些值的快照,以便消费者可以进行一些其他计算。这些对象的值可能会独立改变。队列可能看起来像这样 a1, a1, a2, a1, a2, a2, a3... 消费者处理队列中的每个项目。快照必须包含所有对象,消费者将一次性处理所有对象的此消息。

所以要求是有一个这样的队列:a1,a1,a3,a2,a2,[snapshot,a1,a2,a3],a3,a1 ...问题是这些项目是不同的类型:一种类型对于像 a1、a2 和其他对象这样的快照。这意味着它们应该在不同的队列中处理,但在这种情况下存在竞争条件:消费者可能会在处理快照之前处理对象。

有什么模式可以解决这个(很常见的)问题吗?我们使用 RabbitMQ 进行消息队列。

0 投票
3 回答
3350 浏览

message-queue - RabbitMq 是否进行从交换到队列的循环

我目前正在评估消息队列系统,并且 RabbitMq 似乎是一个不错的候选者,所以我正在深入研究它。

为了提供一点上下文,我希望有一个交换负载平衡消息发布到多个队列的东西。我不想复制消息,因此不能选择扇出交换。

另外,我考虑让多个队列与一个队列与消费者一起处理循环的原因是,我不希望我们的单点故障出现在队列级别。

听起来我可以在发布者端添加一些逻辑,通过编辑路由键并设置适当的绑定来模拟该行为。但这是一种被动的方法,它不会考虑每个队列上消息消费的速度,如果该队列的消费者应用程序死了,可能会导致填满一个队列。

我正在从交换实体方面寻找一种更积极主动的方式,它将根据每个队列大小或类似性质的东西来决定将下一条消息发送到哪里。

我读到了 Alice 和可用的 RESTful API,但这似乎是一种实现快速路由决策的重型解决方案。

任何人都知道交换队列之间的循环是否可以使用 RabbitMQ?谢谢。

0 投票
1 回答
2580 浏览

ruby - 使用 AMQP、Rabbit 和 Ruby 刷新队列

我正在用 Ruby 开发一个系统,该系统将利用 RabbitMQ 在执行某些工作时将消息发送到队列。我在用:

我在这个 gem 上看到的大多数示例都在 EM.add_periodic_timer 块中进行了发布调用。这不适用于我怀疑的绝大多数用例,当然也不适用于我的用例。我需要在完成一些工作时发布一条消息,因此将发布语句放在 add_periodic_timer 块中是不够的。

所以,我试图弄清楚如何将一些消息发布到队列中,然后“刷新”它,以便我发布的任何消息随后都会传递给我的订阅者。

为了让您了解我的意思,请考虑以下发布者代码:

所以,这段代码只是简单地循环,在循环的每次迭代中以 40% 的概率发布一条消息,然后休眠 0.1 秒。它会一直执行此操作,直到发布了 50 条消息,然后停止 AMQP。当然,这只是一个概念证明。

现在,我的订阅者代码:

因此,我们只需订阅队列,并且对于收到的每条消息,我们都会将其打印出来。

很好,除了订阅者只在发布者调用 AMQP.stop 时接收到全部 50 条消息。

这是我的出版商的输出。为简洁起见,它在中间被截断:

接下来,我的订阅者的输出:

如果您注意到输出中的时间戳,则订阅者仅在发布者停止 AMQP 并退出后才会收到所有消息。

那么,作为一个 AMQP 新手,我怎样才能让我的消息立即传递呢?我尝试将 AMQP.start 和 AMQP.stop 放在发布者的 while 循环的主体中,但是只有第一条消息被传递 - 虽然奇怪的是,如果我打开日志记录,服务器没有报告错误消息并且消息确实被发送到队列,但永远不会被订阅者接收。

建议将不胜感激。谢谢阅读。