问题标签 [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 回答
10 浏览

rabbitmq - 在以下情况下是否应该关闭 node-ampqlib rabbitMQ 通道?

我已经定义enqueueMessage了将消息排入rabbitMQ队列的函数。在函数的第一行中,我正在创建通道。这意味着每次我调用enqueueMessage一个频道时都会创建。这是正确的方法还是我应该创建顶级channel变量并重用它?

如果我创建顶级频道,我应该做更多的编码来处理频道因某种原因自动关闭的情况(网络中断)

0 投票
0 回答
21 浏览

node.js - 如何在 nodejs 中使用 amqplib 中的数据库人员使用函数?

我有这个工人文件:

我有兔子服务(问题在 addListener 函数中):

我只是不明白为什么 orm 在这个消费回调中不起作用。我花了一整天的时间寻找解决问题的方法,但仍然找不到。如何在侦听器内执行数据库查询?

0 投票
0 回答
60 浏览

node.js - 如何更新 RabbitMQ 连接参数而不删除 NodeJS 中的队列?

我有 2 个 RabbitMQ 实例,它们都有不同的设置。意思是,它们可以按如下方式连接:

  • const url = ${protocol}://${username}:${password}@${hostname}:${port}/${vhost};
  • const url = ${protocol}://${username}:${password}@${hostname}:${port}/;

在这里,问题是,我可以成功发布到第一个,但是当我尝试连接到第二个实例时,我收到了这个错误。仅供参考,这是两个实例上的同一个队列。

Error: Channel closed by server: 406 (PRECONDITION-FAILED) with message "PRECONDITION_FAILED - inequivalent arg 'alternate-exchange' for exchange 'MY-EXCAHNGE' in vhost '/': received none but current is the value 'MY-EXCAHNGE' of type 'longstr'"

我正在使用"amqplib": "^0.8.0",NodeJS。基于谷歌(更改 RabbitMQ 队列中的参数https ://jira.spring.io/browse/AMQP-746 ),看起来这是一个 RabbitMQ 库问题,您无法在此处更新参数。

我的方法是:a)连接到第一个实例并发布消息,然后关闭通道和连接,然后 b)连接到第二个。以下代码有效,但是当我更新 url (不带vhost)时,我看到了错误。

我不确定为什么await confirmChannel.close()&await getRmqConnection.close()会以undefined. 我可以成功地将消息发布到队列中。

代码:

问题:我可以通过dead-letter-exchange在 RMQ 中使用来实现这一点吗?或者删除队列是唯一的选择?(这是我第一次使用 RMQ,所以提前感谢您的任何意见)。

0 投票
0 回答
13 浏览

node.js - 节点js amqplib,消费者缓存中的回调来自父函数的参数

我有一个函数可以接收参数时间戳并将其发送到队列,在消费者从队列中获取此时间戳并将其与第一次调用时参数中的时间戳进行比较之后,每次调用都可以,但在下一次调用时,消费者从队列中接收新时间戳但 stile使用参数中的先前时间戳进行比较

例如:

第一次调用 => 传递给函数的时间戳 = 123 ,来自参数的时间戳 = 123,来自队列的时间戳 = 123

调用 2 => 传递给函数的时间戳 = 456,来自参数的时间戳 = 123,来自队列的时间戳 = 456

我知道心跳,我真的需要通过时间戳来实现它)

0 投票
0 回答
23 浏览

node.js - Nodejs RabbitMQ amqplib 在同一个连接和通道中消费和发布

如果我有一个需要从同一个 rabbitMQ 实例发布和消费的服务器。我应该为这些操作创建 2 个通道 1 还是在同一个通道上工作?

0 投票
1 回答
53 浏览

javascript - 在nodejs上使用流氓配置文件时如何保护rabbitmq密码

我正在尝试实现一个NodeJS微服务,我需要它来使用RabbitMQ. 对于 rabbit 集成,我使用的是 ' rascal ' ( https://github.com/guidesmiths/rascal ),因为它解决了我的很多问题。我注意到 rascal 是由一个配置文件驱动的,您可以在其中声明兔子 URL、用户名、密码等。

我的问题是,在流氓配置文件中保护这些密码的最佳做法是什么?

a) 不被推送到 git

b) 不那么容易暴露

0 投票
1 回答
77 浏览

node.js - amqplib sendToQueue() 没有向 RabbitMQ 发送消息

我正在围绕amqplibPromise API 构建一个 Typescript 包,以使我更简单地在两个 RabbitMQ 队列之间发送消息。

这是所述包的类中的一个方法,负责向 RabbitMQ 发送消息。它实际上并没有发送消息,因为我无法从 CloudAMQP 看到它们。

这是我创建的一个创建连接和通道的类,在这里使用:

}

我的连接工厂似乎工作正常,因为我可以看到来自 CloudAMQP 仪表板的连接。我也可以从仪表板看到已创建(在我的代码中声明)的队列。但是,我无法让 amqplib 向 CloudAMQP 发送消息。

这是我用来调用我的包的(异步)代码:

似乎有什么问题?

0 投票
0 回答
6 浏览

node.js - 组合预取数据并将其作为数组传递给函数 - rabbitmq、nodejs、puppeteer

我有以下功能,一次预取 3 条消息:

我想在一个数组中收集这 3 条消息并将其传递给 aaaaa.ccccc()

启动工人

功函数