问题标签 [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 投票
2 回答
9667 浏览

node.js - 使用 node.js amqp 模块时如何将 AQMP 消息缓冲区转换为 JSON 对象?

我正在使用 node.js amqp 模块从队列中读取消息。以下是队列中有可用消息时调用的回调:

谢谢。

0 投票
1 回答
309 浏览

node.js - node-amqp 队列被破坏:通知订阅者

我将 node-amqp 和 rabbit 用于一些 pub/sub 工具。我想知道当某人/某物(在其他进程中)破坏了他们正在收听的队列时是否可以通知订阅者。

比如流程一:

现在,其他进程可能会破坏该队列。订阅者如何知道这一点?例如,流程二可以这样做:

我试图监听有效的事件“queueDeletedOk”,但它只在进程二中发出和接收,这正在破坏队列。尝试通过队列“关闭”事件也会发生同样的情况。

谢谢和最好的问候,

0 投票
1 回答
2484 浏览

node.js - 如何从 node.js 检查 RabbitMQ 中是否存在交换?

我想从 node.js 检查是否存在特定的 RabbitMQ 交换。我正在使用 Mocha 作为测试框架。我已经编写了相同的代码,但我的期望似乎不正确。当没有交换时,我希望交换变量的值未定义,但事实并非如此。我正在使用 amqp 模块与 RabbitMQ 进行交互。以下是代码:

检查交易所是否存在的正确方法是什么?

谢谢。

0 投票
1 回答
597 浏览

node.js - 为什么当 node-amqp 出现问题时“关闭”事件?

(我正在使用 node-amqp 和 rabbitmq 服务器。)

如果出现问题,我试图猜测为什么我有一个关闭事件。例如,如果我尝试打开与队列的连接(参数错误),我会收到错误事件。这是完美的确定。

但是,在出现任何错误之后,我也会收到一个关闭连接(在这种情况下,可能是因为将失败的套接字关闭到队列)。之后,自动重新连接,我收到(初始)就绪事件。

问题:

如果出现问题,我会收到错误消息,但随后会出现“就绪”事件,它将重新执行 do_a_lot_of_things。我的方法错了吗?

此致

0 投票
1 回答
2879 浏览

angularjs - node-amqp + socketio:如何同步队列订阅/取消订阅?

我有一个 angularjs 应用程序,在服务器端有 node 和 express。我也有 node-amqp 和 socket.io

我想实现以下行为

该应用程序有一个页面(路由,角度视图),显示带有实时数据的表格。数据使用 socket.io 和 amqp 实时更新,以从位于应用程序外部的 rabbitMQ 服务器流式传输数据。

当用户在浏览器上访问此页面/路由时

  1. 客户端发出一个套接字事件“订阅”</li>
  2. 服务器,在套接字事件“订阅”上,
    • 声明一个兔子队列
    • 将兔子队列绑定到交换器
    • 订阅来自兔子队列的消息/数据
    • 发出一个套接字事件“数据”,将数据发送回用户/客户端

当用户离开页面时,或者换句话说改变路线

  1. 客户端发出一个套接字事件“取消订阅”</li>
  2. 服务器,在套接字事件“取消订阅”上,
    • 从队列中取消订阅

我的问题是:如何确保 queue.subscribe 和 queue.unsubscribe 是同步的?如果用户执行快速的路由更改序列: visit/leave/visit/leave/visit/leave 订阅和取消订阅的顺序有时会颠倒,在新订阅完成之前,服务器会在之前的订阅第二次取消订阅。有什么建议吗?这是我尝试过的,但不起作用:

客户端:controller.js

服务器端:server.js

服务器 console.log 消息:(visit#3 和 leave#3 不同步)

0 投票
2 回答
1664 浏览

node.js - Node-amqp - 在 X 次尝试后拒绝消息

如何实现在几次可配置的重新排队尝试后拒绝消息的机制?

换句话说,如果我订阅了一个队列,我想保证相同的消息不会重新传递超过 X 次。

我的代码示例:

0 投票
1 回答
430 浏览

node.js - 持久队列:在 node-amqp 中序列化/反序列化队列对象

我正在使用该node-amqp模块来管理rabbitmq 订阅。具体来说,我为每个用户/会话分配了一个独占/私有队列,并通过 REST 接口提供绑定方法。即“将我的队列绑定到这个exchange/routing_key 对”,以及“取消绑定我的队列到这个exchange/routing_key 对”。

这里的挑战是避免在内存中保留对队列对象的引用(例如,在具有模块范围的对象中)。

每次我需要它时简单地从连接中检索队列本身证明很困难,因为队列对象在内部保持绑定标签,可能是为了避免违反amqp 0.9.1 参考中的以下内容:

客户端不得尝试解除绑定不存在的队列。错误代码:未找到

我尝试使用 connect-mongo 将队列对象简单地设置为会话对象的属性,因为它在其属性上使用 JSON.stringify/JSON.parse。不幸的是,由于循环结构,队列对象无法“字符串化”。

从 node-amqp 模块持久化队列对象的最佳实践是什么?是否可以序列化/反序列化?

0 投票
1 回答
10345 浏览

node.js - 通过 websocket 发送 RabbitMQ 消息

寻找一些代码示例来解决这个问题:-

想编写一些代码(Python 或 Javascript)作为 RabbitMQ 队列的订阅者,以便在接收到消息时通过 websocket 将消息广播到任何连接的客户端。

我查看了 Autobahn 和 node.js(使用“ amqp ”和“ ws ”),但无法让事情按需要工作。这是使用 node.js 的 javascript 中的服务器代码:-

使用此代码,我可以成功订阅 Rabbit 中的队列并接收发送到队列的任何消息。同样,我可以将 websocket 客户端(例如浏览器)连接到服务器并发送/接收消息。但是......如何在指示的点将 Rabbit 队列消息的有效负载作为 websocket 消息发送(“现在如何通过 WEBSOCKETS 发送”)?我认为这与陷入错误的回调有关,或者它们需要以某种方式嵌套......?

或者,如果这可以在 Python 中更容易地完成(通过 Autobahn 和 pika),那就太好了。

谢谢 !

0 投票
1 回答
106 浏览

node.js - node-amqp,多个绑定回调

我想要一些最佳实践的建议。在通过它轮询数据之前,我需要等待绑定完成,其中大部分是在返回客户端的过程中并行发生的。但是如果已经有一个绑定操作正在进行,发出另一个将替换回调。

如果我想修补 node-amqp 以支持每个绑定操作的单独回调,我将如何进行?

0 投票
1 回答
633 浏览

node.js - 如何在nodejs amqp中获取现有队列参数?

我正在使用使用 amqplib 的 send.js:

和一个使用 amqp 的 receive.js:

问题是,队列的默认选项不匹配。在使用 amqplib 发送后尝试使用 amqp 读取或在使用 amqp 订阅后使用 amqplib 发送时,我收到 406 precondition failed 错误。只要它有效,我很乐意在任何一种配置上进行调整。