我想使用node js azure包从azure服务总线队列中批量获取消息,现在我可以使用set-interval.is获取消息,还有其他任何方式来批量获取消息。
答案 0 :(得分:1)
Service Bus REST API当前不支持接收批处理,因此此库中没有有效的实现。部分原因是REST实现不是特别高效,使用AMQP要好得多。如果你正在寻找性能更好的东西,我会看一下这个库:
https://github.com/noodlefrenzy/node-amqp10
上的相关问题您也可以尝试 out
。
答案 1 :(得分:0)
可以批量查看ServiceBus队列中指定数量的消息。可以使用Node.js Azure包中的ServiceBusService上的receiveQueueMessage方法(仅支持一次仅接收一条消息)从队列接收消息。默认情况下,将在读取邮件时将其从队列中删除,但是当以偷看模式接收时,通过将可选参数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);
答案 2 :(得分:0)
尝试使用@azure/service-bus软件包,该软件包具有用于批量接收消息的api。这将等待的最大批次大小和最长时间作为输入。您将获得所需的消息数或在提供的时间内获取的消息数。检出示例receives messages in a loop。
const sbClient = new ServiceBusClient(connectionString);
const queueReceiver = sbClient.createReceiver(queueName);
const messages = await queueReceiver.receiveMessages(10);
答案 3 :(得分:0)
您可以使用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秒则仍将返回。