[英]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.