繁体   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