簡體   English   中英

azure 服務總線隊列使用 nodejs 讀取批量消息

[英]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 的先決條件:

  1. Node.js Azure包,可以使用命令npm install azure
  2. 環境變量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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM