问题标签 [node-amqplib]

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 回答
4922 浏览

javascript - 如何在 RabbitMq node-amqplib 库中检查连接是否存在?

我正在使用rabbitMq node-amqplib库编写生产者和消费者,我担心服务器突然失去连接,我如何检查连接是否存在?

0 投票
1 回答
4326 浏览

node.js - 使用 amqplib npm 模块的 RabbitMQ 中的连接被拒绝错误

我是 RabbitMQ 的新手,我正在尝试 Nodejs 中的简单示例。

我看到“连接错误连接 ECONNREFUSED 127.0.0.1:15672”错误。请让我知道我在哪里做错了,我可以使用http://localhost:15672从 Web 访问它。

谢谢

0 投票
1 回答
2048 浏览

javascript - 即使客户端关闭,Amqp、rabbit mq 和 socket.io 也会重新连接到队列

我正在使用 rabbitMQ 和 socket.io 编写浏览器通知。我的配置工作正常,除了一种情况。

当我使用用户登录我的系统时,它会创建一个通知-UID-用户 ID队列(现在 queueName 由查询 oaraeter 发送,我将在解决问题后立即实施更复杂的方法)

如果我在另一个浏览器上与另一个用户登录,它会创建另一个队列通知-UID- seconduserid

如果我注销其中一个用户,队列将消失(因为它不耐用)。

问题是,当我在另一个会话上刷新或加载另一个页面时,即使未发送参数 queuename,它也会重新创建第二个队列。

服务器.js

客户端.js

任何想法?

0 投票
1 回答
5819 浏览

node.js - Node.js amqplib - 在连接关闭的情况下无法实现重新连接

当与rabbitmq队列服务器的连接失败时,我正在尝试实现重新连接机制。此代码仅用于消费消息,下面是我的代码(通道初始化函数负责初始化消费者并绑定到队列)。

在连接失败时,我成功收到提示“[AMQP] reconnecting”,但在该队列没有重新连接之后,控制台日志中没有其他提示。

请帮忙。

0 投票
1 回答
203 浏览

node.js - 使用单例的异步/等待混淆

所以无论我读过什么,即使我做对了,我似乎也无法掌握异步和等待的窍门。例如,我的创业公司就有这个。

启动.js

调试跳转到 CommandBus 的 get 实例的末尾(为 rabbitmq 启动一个通道)并启动 Consumers.GetInstance(),但由于通道为空而失败。 命令总线.js

消费者.js

抱歉,我意识到这是在 Typescript 中,但我想这并不重要。调用 cb.AddConsumer 时会出现此问题,该命令可在 CommandBus.js 中找到。它尝试针对尚不存在的通道断言队列。看不懂的,在看。我觉得我已经覆盖了所有等待区域,因此它应该等待频道创建。CommandBus 始终作为单例获取。如果这会引起问题,我不会,但它也是我所涵盖的领域之一等待。任何帮助都非常感谢大家。

0 投票
1 回答
714 浏览

node.js - AMQPLIB - NodeJS - 在 RabbitMQ 中断言一个惰性队列

我想assert a queue in lazy mode into existence通过 amqplib 使用 nodeJs。

我知道我可以通过创建策略来做到这一点,我不想这样做,因为它现在很难在我们拥有的环境中实现自动化。

我尝试了以下方法:

我是checking the mode通过 RabbitMQ 的 HTTP API 触发的队列

对于我在声明队列时提供的所有选项,mode comes back as default

0 投票
1 回答
1840 浏览

node.js - 优化 RabbitMQ 消费者批量消费

我有一个应用程序,在每次消息消费时,我都需要查询 MySQL 数据库以获取一些信息,并基于该进程消费消息。我想对此进行优化,以防止数据库上的多个查询增加负载。

我正在考虑一种方法,我至少等待x 消息y 秒。这样我可以批量消费一些消息,即使在某些时候我收到的消息较少,它们也会被消费。

示例:假设x = 100y = 10 秒

这意味着我等待至少 100 条消息或 10 秒,以先到者为准。这样,我可以一次查询数据库中的 100 条消息。此外,如果我收到的消息少于 100 条,剩余的消息将在最多 10 秒的窗口中处理。

我正在使用 NodeJS 和amqplib消费。我有以下基于 RabbitMQ 示例的代码:

我正在考虑拥有一个全局对象并在每个回调中添加它,并在它到达那些被处理的x 消息consume时检查该对象的计数。不过,不确定如何在此添加y 秒的时间上限,并确保如果我在时间窗口内收到少于x 条消息,则这些消息会得到处理

0 投票
0 回答
39 浏览

rabbitmq - 如何在远程机器上连接 asmq 通道。amqp.connect()

我可以使用以下代码在我的本地机器中使用 rabbitmq 连接到 asmq 通道。

但我想在不同的机器上连接到这个通道并接收数据。

amqp.connect('amqp://localhost', function (err, conn) {});

0 投票
1 回答
195 浏览

node.js - 如何使用 amqplib 在没有 IP 地址的情况下本地访问 RabbitMQ?

在我工作的地方,我们有一个将 RabbitMQ 作为服务提供的 cloudfoundry 服务器。当我配置此服务并尝试通过(localhost、127.0.0.1 等)使用 amqplib 进行连接时,它无法连接。当我查看 Java 项目时,它从不配置 IP,并且似乎通过驱动程序或其他东西(使用 Spring)本地连接。

如何在没有 IP 的情况下使用 amqplib 进行连接?我应该改用另一个节点库吗?

0 投票
0 回答
953 浏览

node.js - 如何将心跳分离到自己的线程以进行 RabbitMQ 连接

我有一个使用 RabbitMQ 和 NodeJS 进行图像处理的进程。由于任务繁重,我想我和这里的链接有同样的问题https://github.com/squaremo/amqp.node/issues/261

我试图弄清楚如何实施对该问题的最后评论。

“是的。NodeJS 是单线程的,如果您长时间使用该线程执行某项操作,则不会发生其他任何事情。正如@michaelklishin 所建议的那样,此一般问题的已知解决方案是使用子进程或集群模块。”

编辑:

我用我认为如何使用 amqp-connection-manager 模块执行此操作的示例更新了下面的代码。现在我使用一个全局变量来保存能够确认的实际消息。我猜有更好的方法来做到这一点。