问题标签 [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 - RabbitMQ、EasyNetQ 与 NodeJS?
我试图了解整合这些技术的合理性。我将如何跨 RabbitMQ 将 NodeJS(目前使用 amqplib,但可以更改)集成到 EasyNetQ?
我有它的工作,除了 EasyNetQ 期待一个对象(我认为)和 Node/amqplib 只能发送字符串。
C#代码:
节点代码:
结果:
有没有办法通过总线发送对象?你如何整合这两者?
node.js - 使用 amqplib for Node.JS 控制 RabbitMQ 消费者的消费率
我的应用程序使用 RabbitMQ 队列来存储消息,然后我有一个工作人员使用这些消息并将它们插入数据库。目的不是在工作负载高峰时对数据库施加压力。我遇到的问题是,在那些高峰期,队列的发布率非常高,并且工作人员开始每秒接收的消息多于它可以处理的消息,直到它崩溃。
有什么方法可以控制消耗率,这样我就可以确保工作人员接收消息的速度不会超过消耗它们的速度?消息并不重要,所以我不介意它们要排队多久才能被工作人员处理。
我将 amqplib 用于 Node.JS,这是我用于工作人员的代码:
rabbitmq - 如何在 RabbitMQ 中重新排队消息
消费者收到消息后,消费者/工作者进行一些验证,然后调用 Web 服务。在这个阶段,如果发生任何错误或验证失败,我们希望将消息放回最初使用它的队列。
我已阅读 RabbitMQ 文档。但我对拒绝、nack 和取消方法之间的区别感到困惑。
node.js - RabbitMQ 和 Node.js 如何处理故障转移场景?
我正在使用 RabbitMQ(集群)并使用 Node.js 客户端(node-amqp - https://github.com/postwait/node-amqp)连接到它。RabbitMQ 文档指出,处理故障转移场景(集群的节点故障)应该由客户端处理,这意味着客户端应该检测到故障并连接到集群中的另一个节点。支持这种故障转移平衡的最简单方法是什么。node-amqp 客户端是否支持这个?任何示例或解决方案将不胜感激。
谢谢。
node.js - RabbitMQ 连接上的空闲超时导致通道泄漏
我使用带有 Node.js 的 node-amqp 来使用队列中的消息。我们的管理员有 60 分钟的空闲连接超时,这会导致绑定一个额外的队列并孤立我之前创建的队列的先前通道。我的日志如下所示,并注意每小时如何绑定一个额外的队列(下一次将是 3,然后是 4,依此类推):
这是我配置连接和队列的方式(注意事件queueUnbindOk
并且basicCancel
不会在空闲超时时被调用,而是甚至会发生连接错误:
您对如何正确配置连接以优雅地处理空闲超时有什么建议吗?
javascript - 在 NodeJs 中存储 RabbitMQ 连接
目前,每次用户在我的网站上加载页面时,我都被迫创建一个新的 RabbitMQ 连接。
这是每次都创建一个新的 TCP 连接。但是,我正在尝试减少使用 NodeJS AMQP 插件与 Rabbit 建立的 TCP 连接数。这是我所拥有的:
我遇到的问题是,如果我尝试这样做:
然后准备功能不会被触发。我假设,那是因为就绪回调已经定义并且不会被重新触发。我想要做的是绑定一个新队列:
非常感谢有关如何解决此问题的任何想法。
谢谢。
node.js - node-amqp 时也不例外
我正在尝试使用 node-amqp。
当在与兔子的连接部分引发异常时,我可以获得该异常,但它会永远重新启动与兔子的连接。
看那个:
系统循环抛出的错误。我知道这是因为 {recconnect:true}。但我希望能够自己捕获异常。任何想法?
我的脚本的输出是这样的:
node.js - AMQPLib 检测/处理通道关闭
我正在寻找通过此库处理意外通道关闭的推荐方法。
我从文档中收集到有一个事件发出,但我不太清楚如何最好地检测该事件(我知道这很简单,但我一般不太清楚事件发出,所以请耐心等待) ,此外,我应该怎么做并不明显。
我应该跟踪哪些订阅者使用该频道然后重新订阅它们吗?别人做什么?
更重要的是 - 有没有办法检查 Channel(或 ConfirmedChannel)对象,并确定它是否仍然“好”?这似乎比事件捕获方法更可取,但我似乎无法找到一种方法来做到这一点(好吧,这并不完全正确 - 我已经通过检查 Channel 上的“接受”方法做了一些事情来确定它是否变坏了,但这似乎很骇人听闻)。
任何指导表示赞赏。
node-amqp - node-amqp:两个消费者一次订阅同一个队列时遇到问题
我有两个消费者需要处理来自同一个队列的消息,但在任何时候都只有一个。我想要完成的一系列事情是这样的:
- (start) 没有消费者订阅队列
- Consumer1 订阅队列
- 生产者向队列发送消息,消息被传递到消费者1
- Consumer1 处理消息,然后在一段时间后取消订阅
- Producer向队列发送更多消息,消息存储在队列中(autoDelete=false,所以没有消费者订阅时队列不会被销毁)
- Consumer2 订阅队列,处理存储的消息并在一段时间后取消订阅。
- Consumer1 订阅,处理消息... .. 等等
这最初按预期工作。在上面的第 5 步之后,我看到来自生产者的更多消息被传递给两个消费者,交替传递给他们每个人,即使只有一个订阅了,另一个取消了订阅。
我用来让它工作的代码是这样的:
如前所述,此代码或实现所需序列的整体方法有什么问题吗?
node.js - node-amqp — 在 Express 应用程序中处理连接的正确方法?
我将 Express 与 node-amqp 一起使用。我的目标是在服务器启动之前创建 amqpConnection 并将其保存到全局对象中,并且在 Express 路由中使用之前创建globals.amqp_connection
的 .
问题是connection.on "ready"
-event 每次我调用路由时都会触发。我可能认为这是因为 Express 服务 http-requests 的方式——为每个调用的路由执行 server.js。因此,对于每个请求,都会创建一个新的实例,connection
并在其上“准备好”的应用程序尝试再创建一个 Express 服务器实例。
如何使 amqp_connection 可以从我的应用程序的任何点访问,但require("amqp").createConnection()
在我需要将某些东西推送到 RabbitMQ 的每个点都没有加倍?
UPD:或者Express没有问题。node-amqp 似乎在创建后每秒触发一次就绪事件。不知道这是否是正确的行为
谢谢你。