【发布时间】:2020-07-30 10:48:50
【问题描述】:
我们有一个分布式架构,并且有一个需要调用的本机系统。挑战在于系统的容量不可扩展并且不能同时承担更多的请求负载。我们已经实现了服务总线队列,其中有一个消息处理程序侦听此队列并调用本机系统。当前的挑战是无论何时在队列中发布消息,消息处理程序都会立即处理该请求。但是,我们希望有一个场景一次只处理两个请求。选择两个,处理它,然后继续接下来的两个。服务总线队列是否提供了内置选项来控制这一点,还是我们只能使用自定义逻辑?
var options = new MessageHandlerOptions()
{
MaxConcurrentCalls = 1,
AutoComplete = false
};
client.RegisterMessageHandler(
async (message, cancellationToken) =>
{
try
{
//Handler to process
await client.CompleteAsync(message.SystemProperties.LockToken);
}
catch
{
await client.AbandonAsync(message.SystemProperties.LockToken);
}
}, options);
【问题讨论】:
标签: azure azure-servicebus-queues