问题标签 [node-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.
javascript - amqplib - 队列中有多少消费者?
对 Node JS 和 RabbitMQ 使用 amqplib 模块,
1)有什么办法可以告诉队列中有多少订阅者?
2)我怎样才能让每个队列都应该有一个消费者密钥?
谢谢!
javascript - 错误:发送后无法设置标头。RabbitMQ 干扰 NodeJS 响应
在 http 响应之后,我正在使用 RabbitMQ(创建通道等)发送一个混乱,但是,服务器抱怨“错误:发送后无法设置标头”。
这是代码:
我假设 RabbitMQ 在响应之后设置标头(我也尝试在响应之前发送 RabbitMQ 消息,但这也没有解决任何问题)。
这是堆栈跟踪:
任何解决方案或想法将不胜感激。
javascript - 如何检查 node.js amqp 客户端中是否已经存在队列?
我有以下情况。我想使用 amqp 客户端实现rabbitmq 的发布/订阅模型。我有订阅特定 ID 的订阅者。我想在该 ID 的名称上形成一个队列。这样所有想要订阅该特定 id 的订阅者都应该订阅该特定队列。因此,我想为具有该 ID 的所有订阅者基于特定 ID 形成一个唯一队列。但在我的情况下,它正在为相同的 id 形成不同的队列(我猜)。结果,特定 id 的订阅者能够以循环方式接收所有消息,尽管所有订阅者都接收到所有消息。下面是我使用的代码。
我看过 node-amqp 模块的文档。但我没有找到任何选项来检查队列的存在。有一些“持久性”选项。但我不认为它会起作用。请帮忙..提前谢谢..
node.js - 如何向所有订阅者发送消息,除了发布者,它也是同一个rabbitMQ队列上的侦听器
我安装了一个由 nodeJS 服务器使用的 rabbitMQ。我使用 rabbit.js 库与 rabbit 进行交互,到目前为止我对它很满意。
我在扇出模式下在同一个队列上有多个订阅者,每个节点都是订阅者,也是发布者,这对我有好处并且工作正常,因为在很多情况下我想通知所有服务器有关发生的一些更新在其中一个节点上(这也是一个发布者......)
我偶然发现了一种情况,在这种情况下,我需要向队列中的所有侦听器发送消息,发送消息的人除外(这也是同一队列上的侦听器)。
我事先不知道谁在听(可能有一个,可能有数百万个),所以我无法通过某些白名单路由规则将其路由到某些特定节点。它必须是某种排除通配符路由规则(一些黑名单),例如,将此消息发送给与我自己的唯一 ID 不对应的每个收听者...
可以使用rabbit.js来完成吗?它甚至可以在rabbitmq中以某种方式完成吗?
我不太了解兔子……所以对我温柔点:)
顺便说一句,如果你知道如何使用 rabbit.js 来做这件事,那就更好了......
编辑::
根据 Derick Bailey 的要求,这就是我需要这个的原因
我有一个系统,其中有许多负载平衡的 nodeJS 服务器,它们作为 web 服务运行。它们彼此完全透明。他们都不知道还有哪些其他节点存在。我想保持这种方式,因为这种分离使我更容易通过添加和删除其他“并行”节点来更好地扩展。
这些节点中的每一个都有自己的内存本地缓存服务。我偶然发现了单个节点更新某个实体的情况。现在我需要使该节点能够通知所有其他并行节点(可能在缓存中具有相同的实体)使其无效。
问题是我发送消息的节点(更新节点)也会收到消息,因为他也是一个监听器。所以我希望他以某种方式将自己排除在该特定消息的接收者列表之外......因此需要一些路由黑名单。(他知道自己,所以我可以让他路由到除了他自己的身份之外的每个人......但即使有人确实在另一端听他也不知道......所以它肯定不能成为白名单)
希望我的需求现在更清楚了。
我已经想到了一个解决我的问题的方法,但是我需要额外的开发,我想通过使用 rabbit 的当前能力来避免它(如果可能的话)我可以在内容中添加一个唯一的 ID的消息。然后发送节点可以识别该消息来自他并忽略该消息。但正如您显然可以理解的那样,这可能会变得很棘手,因为我需要考虑额外的陷阱和其他可能失败的边缘情况......
如果有人可以告诉我如何使用一些现有的兔子配置来做到这一点,我会很高兴听到如何:)
node.js - 使用 NodeJS 的 AMQP 通道池策略
要将消息从 NodeJS 发布者(我正在使用 bramqp,但问题是通用的)发布到 RabbitMQ(已确认,持久),应该采用什么通道池策略?
如果我创建一个巨大的池(20,000 +)并在每次需要发布时寻找一个免费频道,然后在我得到确认时释放频道(保留在免费池中),那么在高负载时,确认会延迟,因此创建了大量通道,导致 RabbitMQ 中的 erlang 进程迅速增加,从而降低了其性能。
如果我使用一个非常小的池或没有池进行管理,那么一旦速率很高,就会引发套接字错误,唯一的选择是重置完整的连接。
这里的最佳做法是什么?
node.js - Send array via RabbitMQ
How can I send an array of messages using RabbitMQ? I do not want to send every message separately.
For example:
How could I use something like:
Thank you!
node.js - amqplib nodejs 包只能用于 rabbitmq 或任何 AMQP 通信吗?
RabbitMQ 网站有一个Javascript NodeJS 的入门教程,它要求使用 amqplib 包npm install amqplib
https://www.npmjs.com/package/amqplib。
但是,amqplib 包看起来更通用,而不是特定于 RabbitMQ 的 AMQP 实现。所以我想知道 amqplib nodejs 包只能用于 rabbitMQ 还是可以用于任何类型的 AMQP 通信?
PS 这是我第一次使用队列、rabbitmq 和 amqp——所以还没有太多关于这个领域的背景知识。
node.js - 错误:使用 node-amqp 读取 ETIMEOUT 一段时间后发生
我有一个运行 RabbitMQ 实例的 VM,以及一个带有 Node 进程的单独 VM,它将消耗队列中的东西。
一段时间不活动后,我的 Node 进程将退出并显示错误。我永远保持节点进程活着,但这是错误的样子:
两个 VM 都是在 Azure 上运行的 Ubuntu 14.04。我应该注意,我在运行 El Cap 的 Macbook Pro 上没有在本地遇到同样的问题。我觉得我错过了一些标志?
我正在连接到amqp://my.example.com
node.js - 为什么我需要 RabbitMQ 发布中的队列?
我正在使用带有node-amqp的 Node.js来创建一个简单的消息队列。我看到的大多数示例都执行以下操作:
- 创建连接
- 创建交易所
- 创建队列并将其绑定到 Exchange
- 通过交易所发布
在我的代码中,我省略了队列(第 3 步),因为它不用于发布。
这个可以吗?还是有排队的原因?
node.js - 使用 SailsJs 订阅 RabbitMQ 队列
如何使用 SailsJs(无水线适配器)订阅 RabbitMQ 队列。仅使用amqp.node
https://github.com/squaremo/amqp.node。并且没有客户要求。
据我了解,控制器用于 http 请求。我想要的是得到一些东西来连接到 RabbitMQ 队列并做一些事情。但这不应该发生在 http 请求中。