Azure服务总线队列性能

Azure服务总线队列性能,azure,performance,.net-core,azure-functions,azure-servicebus-queues,Azure,Performance,.net Core,Azure Functions,Azure Servicebus Queues,我正在使用Azure服务总线队列来满足我的一个需求。要求很简单,azure函数将充当API并在队列中创建多个作业。该功能可扩展,可按需创建新实例。microservice创建的作业将由windows服务处理。因此,发送方是Azure函数,接收方是windows服务。由于azure函数是可伸缩的,因此将有多个函数并行执行。因此,创建到队列中的作业数量将是并行的,可能每500毫秒就有一个作业。Windows服务是一个队列侦听器的单个实例,侦听此队列并并行执行。因此,发送方的数量可能更多,接收方就是一

我正在使用Azure服务总线队列来满足我的一个需求。要求很简单,azure函数将充当API并在队列中创建多个作业。该功能可扩展,可按需创建新实例。microservice创建的作业将由windows服务处理。因此,发送方是Azure函数,接收方是windows服务。由于azure函数是可伸缩的,因此将有多个函数并行执行。因此,创建到队列中的作业数量将是并行的,可能每500毫秒就有一个作业。Windows服务是一个队列侦听器的单个实例,侦听此队列并并行执行。因此,发送方的数量可能更多,接收方就是一个实例。而且每个作业可以并行运行必须受到限制(4,因为它需要更多的时间和CPU)。现在,我使用以下配置的Aure服务总线队列。我的疑问是,哪种配置能够为这一特定需求提供最佳性能

删除队列中的作业对我来说不是问题。那么,我可以使用Delete而不是Peek Lock吗

另外,现在,侦听器接收的项目数量不符合顺序。我想维持一个创建它的顺序。我的要求是最高性能。这项工作是由windows服务完成的,这是一项CPU密集型任务,这就是为什么我将系统限制为4核,因为系统是4核

最大传递计数:4,消息锁定持续时间:5分钟,MaxConcurrentCalls:4(在侦听器中)。我是新来的服务巴士,我需要一个建议

还有一个疑问是,让我们考虑听者并行获得4个工作并开始执行。一个作业已完成执行并成为已完成状态。因此,侦听器将立即选择下一项或等待所有4个作业完成(MaxConcurrentCalls:4)

删除队列中的作业对我来说不是问题。那么,我可以使用Delete而不是Peek Lock吗

PeekLock
receive模式下接收消息的性能低于
ReceiveAndDelete
。您将保存到代理的往返以完成消息

最大传递计数:4,消息锁定持续时间:5分钟,MaxConcurrentCalls:4(在侦听器中)。我是新来的服务巴士,我需要一个建议

MaxDeliveryCount
是一封邮件在未写死信之前可以尝试的次数。它似乎等于磁芯数,但不应该等于。可能只是巧合

MessageLockDuration
只有在您使用
PeekLock
接收模式时才会起作用。对于
ReceiveAndDelete

至于并发性,即使您的工作受到CPU的限制,我也会测试是否有可能实现更高的并发性

要查看的消息接收器上的另一个参数是
PrefetchCount
。它可以通过减少到代理的往返次数来提高总体性能

还有一个疑问是,让我们考虑听者并行获得4个工作并开始执行。一个作业已完成执行并成为已完成状态。因此,侦听器将立即选择下一项或等待所有4个作业完成(MaxConcurrentCalls:4)

侦听器将立即开始处理第5条消息,因为您的并发设置为4,并且一条消息处理已完成

另外,现在,侦听器接收的项目数量不符合顺序。我想维持一个创建它的顺序

要按照邮件发送的顺序处理邮件,您需要使用发送和接收邮件

我的要求是最高性能。这项工作是由windows服务完成的,这是一项CPU密集型任务,这就是为什么我将系统限制为4核,因为系统是4核

有很多事情需要考虑。Windows服务位置的位置将影响延迟和消息吞吐量。向外扩展可能会有所帮助,等等