问题标签 [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.

0 投票
3 回答
6027 浏览

rabbitmq - 是否可以在 amqp 中获取未路由的消息?

使用 RabbitMQ Web UI,当我发布到没有当前队列绑定的主题交换时,rabbitmq 表示消息已发布但未路由。

使用 amqp.node,当我将队列绑定到交换机并使用“#”(全部)开始消费时,我什么也得不到。

我期待收到以前发布但未路由的消息。这可能吗?

0 投票
1 回答
3167 浏览

node.js - rabbitmq - 每个消费者的预取计数

我想使用node-amqp库为 RabbitMQ 创建多个消费者,但我不明白该prefetch-count选项是否指的是每个消费者的计数。我希望每个消费者都有自己的不依赖于其他消费者的预取计数。

谢谢。

0 投票
1 回答
1945 浏览

node.js - Nodejs RabbitMQ 服务器上的高性能

我正在构建一个同时在线拥有一百万用户的分析系统。我使用消息代理之类的 RabbitMQ 来减少服务器的容量

这是我的图表

在此处输入图像描述

我的系统包括 3 个组件。

发布服务器:(生产者) 这个系统是建立在 nodejs 上的。该系统的目的是将消息发布到queue

RabbitMQ 队列:该系统存储publisher server发送到的消息。之后,打开一个连接以从队列发送消息subscriber server

订阅服务器(消费者):该系统接收来自queue

发布服务器源代码

专门创建交换"message_queues""fanout"向所有消费者发送广播

订阅服务器源代码

"message_queues"交易所接收消息

当我实现发送消息时。系统运行良好,但是我尝试了该系统的基准测试性能(每秒大约 1000 个用户发送请求),然后系统出现了一些问题。系统似乎过载/缓冲区溢出(或某些事情无法正常工作)。

两天前我才读到rabbitmq。我知道它的教程是基本示例,所以我需要帮助在现实世界中构建系统而不是......任何解决方案和建议

希望我的问题有意义

0 投票
2 回答
2379 浏览

node.js - 如何将消息放在 MQRabbit 队列的末尾

我正在研究能够处理来自 RabbitMQ 的消息的工作人员。

但是,我不确定如何做到这一点。

如果我收到一条消息并且在处理过程中发生错误,我如何将消息放入队列的末尾?

我正在尝试使用 nack 或拒绝,但消息总是重新放在第一个位置,其他消息保持冻结!

我不明白为什么必须将消息放在第一位,我正在尝试“玩”其他选项,例如 requeue 或 AllupTo,但它们似乎都不起作用。

先感谢您!

0 投票
1 回答
1313 浏览

javascript - 如何使用 amqp.node 使 rabbitmq 消息过期

这是我的代码:

我期望的是消息在一秒钟内过期。当我在几秒钟内运行我的消费者时,消息就到了!

阅读文档,我知道我只需在选项中添加参数并messageTtl以毫秒为单位传递。

我做错了什么?

0 投票
0 回答
355 浏览

node.js - 节点 js 并发与 amqp

我正在编写一个使用 rabbitmq 接收消息的节点 js 服务。但是当我尝试向我的节点 js 服务发送并发请求时,我遇到了一个问题。

这是我写的 amqp 订阅者,

现在我正在尝试使用发布者向此发布消息,

但是当我同时执行发布者和订阅者时,我会在订阅者端得到以下输出

似乎并发请求正在覆盖收到的消息。有人可以帮忙吗?

0 投票
2 回答
1471 浏览

node.js - AMQPlib nodejs消费者任务并发

我正在使用该amqlib模块构建一个带有rabbitmq和nodejs的后台任务管理系统。

有些任务真的很消耗 CPU,所以如果我启动了很多任务并且我只有几个工作人员,我的服务器可能会被杀死(使用过多的 CPU)。

我想知道是否有一种方法可以创建一个 amqp 队列,以便我的消费者一次只使用该队列的一个任务(即在确认或拒绝之前,不要向该消费者发送此类任务) . 或者我应该在代码中自己处理这个问题(也许在我的工作人员中保留一个引用,说明我正在处理这个队列的任务并在我执行任务时拒绝这个队列的所有任务?)。

这是我的示例代码:

我正在创建这样的 amqp 连接

我的队列名称是tasks

这是我的消费者(我想这是我应该做的工作来限制这个队列的一个并发任务):

非常感谢 !

0 投票
1 回答
1420 浏览

javascript - 具有异步订阅者功能的 RxJS Observable

我正在尝试做一些感觉应该很简单的事情,但事实证明它非常困难。

我有一个订阅 RabbitMQ 队列的功能。具体来说,这是 Channel.consume 函数:http ://www.squaremobius.net/amqp.node/channel_api.html#channel_consume

它返回一个通过订阅 ID 解析的承诺 - 稍后需要取消订阅 - 并且还有一个回调参数以在消息从队列中拉出时调用。

当我想取消订阅队列时,我需要在这里使用 Channel.cancel 函数取消消费者:http ://www.squaremobius.net/amqp.node/channel_api.html#channel_cancel 。这需要先前返回的订阅 ID。

我想将所有这些东西包装在一个 Observable 中,当订阅 observable 时订阅队列,并在取消订阅 observable 时取消订阅。然而,由于调用的“双异步”性质,这被证明有些困难(我的意思是说它们既有回调又返回一个承诺)。

理想情况下,我希望能够编写的代码是:

但是,这是不可能的,因为此构造函数不支持异步订阅函数或拆卸逻辑。

我一直无法弄清楚这一点。我在这里错过了什么吗?为什么这么难?

干杯,亚历克斯

0 投票
0 回答
390 浏览

node.js - amqplib nodejs 消费rabbitmq

这就是我在rabbit中使用队列的方式,我想知道为什么这个promise仍然挂起并且没有返回结果。我正在尝试访问一个调用此承诺的端点,并期望它返回正常,以确保它给我一个 200 OK 状态。现在它表现得好像它没有从这项服务中得到任何回报,我想知道我做错了什么。谢谢

0 投票
1 回答
2945 浏览

angularjs - 我可以在浏览器中使用 amqplib 吗?

我是 AMQP/RabbitMQ 新手,也是相对的 Node.js 新手。我可以在客户端使用 amqplib NPM 库吗?

我希望能够从我的 Angular 应用程序将消息直接推送到 RabbitMQ。我使用 Browserify 来模块化我的很多客户端代码。我现在开始尝试使用 RabbitMQ,并希望通过 amqp 协议将消息直接从浏览器推送到基于云的队列。

我已经通过 NPM 安装了 amqplib 并编写/粘贴了以下模块:

当我尝试运行它时,我收到以下错误:

我在这里吠错树了吗?amqplib 是否只能在“正确”的节点环境中运行?

作为第二个问题,确定特定 NPM 包是否会在浏览器环境中运行的最佳方法是什么?在我看来,有些 NPM 包会在浏览器中运行,而有些则不会——对此有信心的最好方法是什么?