问题标签 [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.
node.js - amqp rabbitmq 通道范围
我将 amqplib 与 node.js 一起使用,并试图确保我理解channels
.
这是来自 amqplib 文档:Channels are multiplexed over connections, and represent something like a session, in that most operations (and thereby most errors) are scoped to channels.
这是一些基本代码,我将在其中打开 amqp 连接、创建通道、交换和队列:
在上面的代码中是否存在exchange '1'
并且queue 'a'
只存在于为其定义它们的通道上?我的意思是,如果我要发布a
要从另一个渠道交换的消息,交换a
仍然会路由消息吗?
node.js - amqp.node 不会检测到连接断开
我们有一个运行 socket.io 服务器的 node.js 脚本,它的客户端使用来自 RabbitMQ 队列的消息。我们最近迁移到了 Amazon AWS,而 RabbitMQ 现在是一个由两台机器(冗余实例)组成的集群。AMQP 连接有时会丢失(这是来自具有冗余 VM 的高可用性环境的限制,我们必须应对它),如果尝试重新连接,DNS 会选择连接到哪个实例(它是一个具有数据复制功能的集群,因此连接到哪个实例并不重要)。
问题是从未尝试重新连接;一段时间后,当连接丢失时,amqp.node 显然没有注意到连接已丢失。此外,消费者停止接收消息,socket.io 服务器只是停止接受新连接。
我们在 RabbitMQ URL 处设置了 55 秒的心跳超时(不要与 socket.io 心跳超时混淆),并正在使用 amqp.node 的回调 API 检查“错误”和“关闭”事件,但它们显然从未发出过。队列期望消费的消息被确认。我们希望节点脚本检测到丢失的连接并自行完成,因此环境将自动启动一个新进程并再次建立连接。
这是代码,也许我们在 amqp.node 回调 API 或其他方面做错了。
javascript - node.js AMQP 不返回回调
我正在使用节点AMQP模块连接到 RabbitMQ。我能够连接、创建交换、队列并能够将消息发送/发布到交换。我可以确认消息已在管理控制台上发布。
问题是我没有收到交换发布调用的回调。这是我的代码。
初始化:(app 是 express.js 实例)
然后,当我需要发送消息时,我使用:
永远不会调用回调函数(transmissionFailed)。请帮忙!
node.js - Cannot connect to an exchange in rabbitmq
I'm trying to achieve something very simple - connect to a RabbitMQ exchange and consume messages. I'm using https://github.com/postwait/node-amqp. Here's the NodeJS code.
However, when I run the server, the line console.log('Connected to RabbitMQ')
gets executed repeatedly forever. Of course, this behavior disappears when I remove var exchange = connection.exchange('foobar')
.
I'm fairly new to NodeJS, and I've tried reading up the docs and Googling around for example code, but nothing works. What am I missing?
node.js - 如何从我自己的代码中获取关于 RabbitMQ 订阅处理程序中错误的堆栈跟踪?
如果在处理来自 RabbitMQ 的传入消息的 node.js 函数中引发错误,则堆栈跟踪来自 node-amqp 代码,而不是我的处理程序中的代码(并且错误通常是“无法调用未定义的方法 indexOf”,不管实际错误是什么)。
有什么方法可以获取正在执行的代码的堆栈跟踪,而不是在 node-amqp 模块的“边缘”处停止的堆栈跟踪?
示例堆栈跟踪:
node.js - 使用 node-amqp 库在 RabbitMQ 中的每个 exchange.publish() 通道都在不断增加
我正在为我的 nodejs 项目使用 node-amqp 库。我还将问题发布到它的 github 项目页面。
它不断创建新频道,并且永远处于闲置状态。一小时后,频道约为 12000 个。我检查了交换和发布的选项,但到目前为止我还没有接近解决方案。
代码有什么问题和/或rabbitmq服务器是否有任何选项/设置来解决这个问题?
这是示例代码:
node.js - Queue routing to default exchange even when DLX argument set
Really confused here...
Have a queue with dead letter props set...
and defining the actual exchange...
The problem is that all traffic is going through the default exchange and not the dead letter exchange. The ttl props are being honored but not the exchange name. That is seen here...
Ideas?
Edit:
below you can see the queues created that should funnel into the DLX once they expire.
node.js - RabbitMQ(通过 node-amqp):未处理的连接错误:UNEXPECTED_FRAME - 60 类的预期内容头,而不是非内容头帧
我正在使用node-amqp连接到 RabbitMQ。设置如下:
- 两台 RabbitMQ 服务器(以下称为“兔子”),一台称为“传入”,另一台称为“通知程序”。
- 数据发布到“传入”兔子,我的应用程序缓冲(“缓冲区”应用程序)一定数量的消息,然后再将它们写入数据库。
- 然后缓冲区尝试将这些消息发布到“通知程序”兔子,该兔子旨在通知系统的其他部分(如 UI)。
从“传入”中提取消息很好,并且写入数据库等一切正常,但是在发布到“通知程序”时,我在尝试发布前几条消息后收到以下错误:
连接如下所示:
(我确实看到了交换打开的消息,所以它确实成功地打开了它。)
然后,我将按如下方式发布到此交易所:
一旦数据写入数据库,这将在循环中调用。
这个错误只弹出一次,但是当我查看 RabbitMQ 管理界面时,根本没有消息发布到队列中。我尝试将队列类型从更改为fanout
,topic
但无济于事。此外,该confirm: true
标志似乎什么都不做,因为从不调用确认回调。这意味着在发布新消息之前我不能等待消息确认。
我无法弄清楚问题是什么,因为错误消息有点神秘。这可能与尝试(几乎)同时发布许多东西有关,但如果没有确认回调,我无法阻止这种情况发生......
node.js - nodejs amqp 只能接收一次消息
请注意,conn.end()
被注释掉了。经过大量研究,我仍然不明白为什么这里需要它。虽然它很神奇,但每次连接都会结束,并且必须在每条消息后重新连接到服务器。
AMQP是这样设计的吗?或者这是 node-amqp 实现的问题?