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

javascript - 嵌套异步/等待执行后如何执行函数

我正在处理文件和文本。我textract用来从文档中提取文本并使用amqplib消息代理发布文本(如果这不是你的事,你仍然可以回答)。我有多个异步/等待函数要运行。发布所有文档的文本后,我想关闭amqplib' 连接。这是代码。

}

此处调用 startExtraction

}

我不确定我是否接近解决方案。我很难把头绕在 asyc/await 上。closeConnection()这个问题的目标是在文本提取并发布到代理后获得一种执行功能的方法。提前致谢。

0 投票
0 回答
13 浏览

node.js - 使用模拟 ampqlib 代替 ampqlib

我正在尝试使用 mock-amqplib 来测试使用 amqplib 的服务。我想在我的所有 spec.ts 文件中将 import from 'mock-amqplib' 替换为 import from 'mock-amqplib'。

0 投票
1 回答
202 浏览

rabbitmq - 消息模式 - RabbitMQ/NestJS

我正在尝试集成到使用 NestJS 完成的项目中,这是一个简单的 api,您可以在其中发布带有名称(或模式)的消息并将其发送到已实现与名称匹配的处理程序的系统。

我正在构建的系统非常小,使用 NestJS 并没有多大意义。

我遇到的问题如下:

我正在创建一个简单的 api 来触发将消息发布到队列中。消费者在使用 NestJS 的系统上。

我不知道如何为该消息提供该系统可识别的模式。例如:

假设我想发布一条名为“CreateRecord”的消息,其有效负载要从另一个系统处理,该系统具有同名的处理程序和实现。

使用 amqplib 如何给消息命名或模式?

0 投票
1 回答
194 浏览

node.js - 如何使用 NodeJs (amqplib) 获取 RabbitMQ 队列的未确认消息计数

如何使用 NodeJs (amqplib) 获取 RabbitMQ 队列的未确认消息计数。

checkQueue我们可以使用orassertQueue方法轻松获取队列的总消息数。

我有很多动态队列,这些队列被多个消费者使用,我想在所有作业处理完毕后删除队列。

问题是当消费者附加到队列时,我正在检查消息计数是否为零,如果消息计数为零,则我删除队列,但当时如果该队列有一些未确认的消息但消息计数为零,那么我该如何处理。

0 投票
0 回答
36 浏览

javascript - Channel.get 未触发

我正在使用 RabbitMQ 队列在消费者之间发布和接收消息,主要问题是我想接收一条消息然后退出。从这个网站上的其他答案中,我看到这channel.get似乎是最好的方法。但是,我无法让它工作。是我一直在使用的答案。

我当前的代码:

据我所知,它与上面接受的答案中的代码相同,但是我似乎无法让它工作。我错过了什么?

编辑:额外信息

使用channel.consume对我有用,它可以获取队列中的任何消息。但是,使用该channel.get方法一无所获。我使用console.log线条来确保正确创建通道,但由于某种原因,channel.get回调永远不会被触发。我知道所有连接和队列创建都在工作,我似乎根本无法获得channel.get触发方法。

编辑2:我发现了问题

我的回调函数不正确。查看此处的文档,在回调之前channel.get需要一个options参数,并将其添加到修复了我的问题中。我的工作代码现在是:

0 投票
1 回答
18 浏览

node.js - 在 amqp 中列出有界队列

node.js中有没有全面实现rabbitmq功能的库?
我在我们的项目中使用了 amqplib,但它似乎没有列出有界队列的功能。
如何在最好的 amqplib 中列出这些队列?

0 投票
0 回答
73 浏览

javascript - Rabbitmq 根据用户数量动态创建队列

我有一个场景,我必须将收到的消息列表路由给相应的用户。假设如果我有

生产者.js

消费者.js

我在一篇博客中读到动态创建队列是一种反模式。 https://derickbailey.com/2015/09/02/rabbitmq-best-practices-for-designing-exchanges-queues-and-bindings/

我还尝试在生产者端创建队列,这是创建队列,但无法使用来自该队列的消息,因为我在使用它时不知道队列的名称。

我怎样才能有效地处理这种情况?

0 投票
2 回答
968 浏览

node.js - RabbitMQ:Ack/Nack 关闭并重新打开的通道上的消息

我从 RabbitMq 服务器收到此错误

服务器关闭的频道:406(PRECONDITION-FAILED),带有消息“PRECONDITION_FAILED - 未知的交付标签 80”

发生这种情况是因为在消费者任务期间连接丢失,最后,当消息被确认/确认时,我收到此错误,因为我无法在与我从中获取消息的通道不同的通道上确认消息。

这是 RabbitMq 连接的代码

如您所见,在建立连接后,创建了一个通道,并且在我遇到连接问题后,通道设置为 NULL,1 秒后连接重试,重新创建一个新通道。

为了管理离线期间,我使用了一个缓冲区,该缓冲区收集在通道为 NULL 时发送的所有确认消息,并且在重新建立连接后我卸载缓冲区。

所以基本上我必须找到一种方法在连接丢失或通道因watherver原因关闭后发送ACK。

谢谢你的帮助

0 投票
0 回答
23 浏览

node.js - 触发rabbitmq阻塞事件怎么办?

我在启动我的nodejs应用程序时创建了一个rabbitmq连接,我创建了一个doPublish函数,它在内部使用通道(从该连接创建)进行发布。如果rabbitmq发布调用返回true,那么一切都很好,但是当它返回false时,我是将该发布数据存储在文件中作为备份。现在,当 rabbitmq 触发一个被阻止的事件时,发布调用将不会返回任何内容(我的猜测)。那么我应该如何处理这个阻塞事件呢?对于每个客户端请求,我都会连续调用 doPublish 函数。

0 投票
0 回答
19 浏览

rabbitmq - 在 RabbitMQ 中发布之前进行验证

我正在将 RabbitMQ 用于在线拍卖系统。因此,每当一个值即将公布,即出价时,该值应大于队列中的最后一个值(因为出价不应小于前一个出价)。

那么,如何在将其发布到队列之前对其进行验证?我正在使用amqplib客户端来实现。