问题标签 [amqp]

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 投票
3 回答
15066 浏览

failover - 如何使 RabbitMQ 队列故障转移?

RabbitMQ 默认支持集群,但不会复制队列,而是绑定到创建它们的节点。我现在正在寻找使 RabbitMQ 高度可用的方法,而不是他们记录的 DRBD 解决方案,因为保留一个除了等待活动服务器关闭之外什么都不做的整个服务器似乎是一种资源浪费。

我正在考虑一个有两个队列的设置。发布消息时,我希望 RabbitMQ 集群将消息发送到两个队列中的任何一个,无论哪个队列已启动。我知道如果发布者尝试发布到已关闭的队列并且发布者可以使用另一个队列再次尝试,发布者会收到错误,但我想知道这是否可以在集群级别自动完成,以便我不不必编写客户端代码来处理它。这可以做到吗?

0 投票
1 回答
2221 浏览

python - 简单协议(如 twisted.pb)vs 消息传递(AMQP/JMS)vs Web 服务(REST/SOAP)

我目前在python上使用twisted的透视代理,过去我曾考虑过切换到RabbitMQ之类的东西,但我不确定它是否可以取代pb——我觉得我可能在这里将苹果与橙子进行比较。我最近阅读了很多关于 REST 以及不可避免的与 SOAP 的争论,这使我阅读了诸如 SOA 之类的“企业级”Web 服务内容。

我有一个项目即将推出,我需要在 Web 和桌面上实现一些类似 erp 的功能,因此我正在考虑使用哪种方法/技术在服务器和客户端之间进行通信。但我也在尝试尽可能多地了解这一切,所以我不想仅仅解决这个特定的问题。

您使用什么来进行服务器和客户端之间的通信?

我了解像透视代理这样的特定于 python 的协议可能会限制我的互操作性,但我是否可以假设某些 AMQP 协议可以取代它?

如果我没记错的话,twisted.pb 和 amqp 都使用永远在线的连接和非常低开销的协议。但一方面,始终保持大量客户端连接可能是一个问题,另一方面,即使使用 http keep-alive 以及他们使用序列化部分的任何技巧,Web 服务仍然存在问题。

如果我的任何假设有误,如果有人能指出我正确的方向以了解更多信息,我将不胜感激。

0 投票
4 回答
36911 浏览

message-queue - 如何有选择地从 AMQP(RabbitMQ)队列中删除消息?

我想有选择地从 AMQP 队列中删除消息,甚至不阅读它们。

场景如下:

发送方希望基于 X 类型的新信息到达的事实使 X 类型的消息过期。因为订阅者很可能还没有消费 X 类型的最新消息,所以发布者应该删除以前的 X 类型消息并将最新的消息放入队列中。整个操作对订阅者应该是透明的——事实上他应该使用像 STOMP 这样简单的东西来获取消息。

如何使用 AMQP 做到这一点?或者也许在另一个消息传递协议中更方便?

我想避免复杂的基础设施。所需的整个消息传递就像上面一样简单:一个队列、一个订阅者、一个发布者,但发布者必须具有根据给定条件临时删除消息的能力。

发布者客户端将使用 Ruby,但实际上,一旦我发现如何在协议中执行它,我就会处理任何语言。

0 投票
5 回答
2933 浏览

message-queue - 消息优先级在消息队列系统中本质上是不重要的吗?

似乎我看过的大多数消息传递系统都具有对优先级消息队列的基本支持(如果有的话)。例如,AMQP 仅指定至少 2 个优先级。RabbitMQ 是一种 AMQP 实现,不支持任何优先级。ActiveMQ 将在几天后在 5.4 版中获得对 10 个消息优先级的支持。JMS 规范指定了 10 个优先级。

单词的非消息传递意义上的优先级队列基于具有不受限制的优先级范围的任意字段对其内容进行排序。为什么像这样的实现不作为消息传递系统的一部分存在?正如我在标题中所问的,优先级本质上是非消息传递概念吗?

我意识到一个答案可能是优先级的概念引入了消息在队列中无限地等待处理更高优先级消息的可能性。还有其他原因吗?

0 投票
2 回答
1816 浏览

rabbitmq - 生产者工作通过消息队列持续向消费者散列?

我有一个生产者,我想通过一致的哈希在消费者之间一致地分配工作。例如,对于消费者节点 X 和 Y,任务 A、B、C 应该总是去消费者 X,而 D、E、F 应该去消费者 Y。但是如果 Z 加入消费者池,这可能会发生一点变化。

我不想编写自己的逻辑来连接到消费者节点,尤其是不想管理加入和离开池的节点,所以我走上了使用 RabbitMQ 的道路,每个消费者节点都有一个独占队列.

我遇到的一个问题是列出这些队列,因为生产者需要在分配工作之前知道所有可用的队列。AMQP 甚至不支持列表队列,这让我不确定我的整个方法。不过,RabbitMQ 和 Alice(目前不完整)添加了该功能:是否有用于在 RabbitMQ 上列出队列和交换的 API?

这是对兔子的明智使用吗?我应该使用消息队列吗?是否有更好的设计让队列可以始终如一地在消费者之间分配我的工作,而不是我需要这样做?

0 投票
1 回答
1068 浏览

message-queue - 在 AMQP 中实现消息优先级

我打算使用 AMQP 来允许分布式机器集合异步向中心位置报告。这个想法是将消息放入队列并允许中央日志记录实体以解耦的方式处理队列;“过程”只是在数据库表中创建或更新一行。

我预料到的一个问题是网络抖动在消息排队过程中的影响——如果由于两条消息发出的时间小于网络抖动而update意外到达 an 前面会发生什么?insert

阅读 AMQP 规范,似乎我可以对inserts 应用更高的优先级,以便它们跳过队列并首先得到处理。但大概这仅适用于要跳过的代理处实际存在队列的情况。有没有办法在代理处施加缓冲或延迟以吸收这种抖动并允许在消息传递给消费者之前制定优先级?

或者我是否必须按照 ActiveMQ 的建议走重新排序器的路线?

0 投票
1 回答
1442 浏览

php - 无法为 PHP 安装 AMQP - 找不到符号错误

运行下面列出的代码时出现以下错误。我已经通过 PECL 安装了 AMQP 扩展,当我从命令行和浏览器执行 phpinfo 时,它在我的 php.ini 文件中显示良好。

尝试运行该代码时出现此错误:

这些是我遵循的安装说明:

0 投票
1 回答
6657 浏览

php - 如何使用 cygwin/mingw 在 windows 上编译 PHP 扩展?

我正在尝试使用 Cygwin 在 Windows (64) 上构建RabbitMQ PHP 包装器AMPQ PHP 包装器。我已经成功构建了底层 C 库(librabbitmq.dll),但我被困在“phpize”步骤:

phpize && ./configure --with-rabbit && make && sudo make install

如果我理解正确,Windows 上没有“phpize”,那么如何构建我的 PHP 包装器?

请注意,我对构建 PHP 扩展完全陌生(无论是在 linux 还是 windows 上)。

0 投票
1 回答
139 浏览

ruby-on-rails - 工作客户端在启动后几秒钟内停止

嗨,我正在尝试使用 RabbitMQ 而不是 Starling 我已经配置了我的应用程序,一切似乎都很好,但是当我运行 'script/workling_client start' 时,它开始工作并在几秒钟后结束,我不明白为什么

我的应用程序与 Starling 完美配合

我正在使用 Fedora 13 ruby​​ 1.8.7 rails 2.3.8 mongrel(根据http://github.com/tmm1/amqp配置)

日志文件为空,但代码 isidelisten操作肯定会执行

0 投票
1 回答
1641 浏览

php - 有没有人在 windows x64 上为 php 5.2.x 编译了 rabbitmq/amqp 库

我正在尝试从我的 windows X64 开发机器上的 php (5.2.x) 脚本向 RabbitMQ 发布消息。

问题是我没有找到任何 php 的 dll 扩展。我的同事实际上正在尝试构建它(参见如何使用 cygwin/mingw 在 Windows 上编译 PHP 扩展?),但没有成功:(。

有谁知道我在哪里可以找到适用于 php (5.2.x) 的有效/工作 RabbitMQ dll 扩展?或者,如果有人有经验可以正确快速地做到这一点,那肯定会非常有帮助。