当前位置: 首页 > 知识库问答 >
问题:

如何从azure service bus主题订阅中一次接收N个消息

艾俊晖
2023-03-14

我有一个azure service bus主题订阅,其中消息不断涌现。

下面的代码主要是一次接收一条消息,并对其进行处理,并将相关结果存储到数据库中。

我试图将MaxConcurrentCalls设置为10,但由于数据库工作设计的原因,它耗尽了数据库连接池。

所以我想一次从订阅中获取10个消息(在一批N个消息中接收),并希望用一个数据库调用来处理。

我没有看到任何批处理api选项,这可能吗?

我使用的是Microsoft.Azure.ServiceBusnuget版本4.1.1

 _subscriptionClient = new SubscriptionClient(connectionString, topicName, subscriptionName);

            // Register the callback method that will be invoked a message of interest is received
            _subscriptionClient.RegisterMessageHandler(
                async (message, token) =>
                {
                    if (await ProcessMessage(message, token))
                    {
                        await _subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);
                    }
                },
                new MessageHandlerOptions(ExceptionReceivedHandler) { MaxConcurrentCalls = 1, AutoComplete = false });

共有1个答案

池宸
2023-03-14

这里有预取的概念:https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-performance-informations?tabs=net-framework-sdk#预取

预取使队列或订阅客户端能够在执行接收操作时从服务加载其他消息。

 类似资料: