[英]azure service bus queue read bulk message using nodejs
我想使用 node js azure 包从 azure 服务总线队列中批量获取消息,现在我可以使用 set-interval 来获取消息。还有没有其他方法可以批量获取消息。
服务总线 REST API 当前不支持接收批次,因此此库中没有有效的实现。 部分原因是 REST 实现的性能不是特别好,使用 AMQP 会好得多。 如果您正在寻找性能更好的东西,我会看看这个库:
https://github.com/noodlefrenzy/node-amqp10
github
相关问题
你也可以试试这个out
。
可以从 ServiceBus 队列中批量查看指定数量的消息。 可以使用 Node.js Azure 包中 ServiceBusService 上的 receiveQueueMessage 方法(支持一次只接收一条消息)从队列接收消息。 默认情况下,消息将在读取时从队列中删除,但是当以 peeklock 模式接收时,通过将可选参数isPeekLock
设置为 true 可以防止删除
使用Azure
ServiceBus 的先决条件:
Node.js
Azure
包,可以使用命令npm install azure
AZURE_SERVICEBUS_CONNECTION_STRING
,包含 Azure 模块连接到ServiceBus
队列所需的信息以下是接收 10 条消息的示例代码,
//Import the module
var azure = require('azure');
//Create ServiceBusService object
var serviceBusService = azure.createServiceBusService();
var receivedMessages = [];
while(i<10){
serviceBusService.receiveQueueMessage('myqueue', { isPeekLock: true },
function(error, lockedMessage){
if(!error){
// Message received and locked
receivedMessages.push(lockedMessage)
}
}
});
Console.log(receivedMessages);
试试@azure/service-bus包,它有一个 api 可以批量接收消息。 这需要最大批量大小和最大等待时间作为输入。 您将获得您要求的消息数量或在提供的时间内获取的消息数量。 查看循环接收消息的示例。
const sbClient = new ServiceBusClient(connectionString);
const queueReceiver = sbClient.createReceiver(queueName);
const messages = await queueReceiver.receiveMessages(10);
您可以使用https://www.npmjs.com/package/@azure/service-bus
下面是一个示例代码,您可以创建一个接收器对象,然后获取多条消息:
let receivingMode = ReceiveMode.peekLock;//Or receiveAndDelete
let sbClient = ServiceBusClient.createFromConnectionString(connectionString);
let subscriptionClient = this.sbClient.createSubscriptionClient(topicName, subscriptionName);
let receiver = this.subscriptionClient.createReceiver(receivingMode);
let messages = await this.receiver.receiveMessages(maxMessageCount, maxWaitTimeInSeconds);
例如,如果 maxMessageCount = 10 和 maxWaitTimeInSeconds = 60,这意味着该函数将在有 10 条消息时立即返回 10 条消息,如果它等待了 60 秒,它将无论如何都会返回。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.