放弃的会话ID会对azure服务总线性能产生任何影响吗?

放弃的会话ID会对azure服务总线性能产生任何影响吗?,azure,azureservicebus,Azure,Azureservicebus,情景: 我们从多个发件人向队列发送消息(相同类型)。每个发件人将发送一组消息,这些消息由给定组的唯一会话id绑定在一起。组的数量没有限制。在消费方面,我们有多个接收器 问题: 如果接收者没有在组中的最后一条消息上调用wait session.CloseAsync(),我们的azure service bus实例是否会对性能产生任何影响?对于消息会话,关闭会话表示任何其他接收者都可以拾取该会话并继续处理(为确保FIFO语义,消息会话只能由一个接收器处理)。您应该在会话不再需要或结束时努力关闭会话。

情景: 我们从多个发件人向队列发送消息(相同类型)。每个发件人将发送一组消息,这些消息由给定组的唯一会话id绑定在一起。组的数量没有限制。在消费方面,我们有多个接收器

问题:
如果接收者没有在组中的最后一条消息上调用wait session.CloseAsync(),我们的azure service bus实例是否会对性能产生任何影响?

对于消息会话,关闭会话表示任何其他接收者都可以拾取该会话并继续处理(为确保FIFO语义,消息会话只能由一个接收器处理)。您应该在会话不再需要或结束时努力关闭会话。这样,您的客户端就可以开始处理另一个待处理会话的消息


你也可以看看Clemens的会话工作原理。

对于消息会话,关闭会话表示任何其他接收器都可以拾取会话并继续处理(消息会话只能由单个接收器处理,以确保FIFO语义)。您应该努力在会话不再需要或结束时关闭该会话。这样,您的客户端就可以开始处理另一个待处理会话的消息


Clemens也提供了一个很好的会话工作方式,您也可以看看。

在接收者为给定会话处理队列中的所有当前消息后,似乎要等待大约60秒才能调用消息接收者的OnCloseSessionAsync方法,这实际上会导致以下异常,该异常在session中报告nHandlerOptions.ExceptionReceived处理程序。以下是exception:options.ExceptionReceived:Action:OnCloseSessionAsync exception:System.NullReferenceException:Object reference未设置为对象实例的详细信息。在Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1…,同样,一旦接收方关闭会话(通过服务总线客户端),它似乎可以处理其他会话。我没有明确关闭会话。所以问题是:这对性能有影响吗?@Raghu,你应该用所有这些细节更新你的问题为什么?问题非常清楚(即使没有上述细节)。上面的回答是关于指导的,并没有回答我的问题。但是有一个小小的更正:我收到的异常是我自己做的。我发现了一个bug。但是我关于放弃会话的问题仍然存在。请考虑一下。如果你没有明确关闭会话,客户端正在消耗资源,让它闲置和运行它允许该会话的下一条消息或连接断开,而不是处理另一个会话的消息。在接收者处理给定会话队列中的所有当前消息后,它似乎要等待大约60秒才能调用消息接收者的OnCloseSessionAsync方法,这实际上导致了以下异常正在SessionHandlerOptions.ExceptionReceived处理程序中报告。以下是异常的详细信息:options.ExceptionReceived:Action:OnCloseSessionAsync异常:System.NullReferenceException:Object reference未设置为对象的实例。在Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1….同时,一旦会话是由接收者(服务总线客户端)关闭的,它似乎可以处理其他会话。我没有明确关闭会话。所以问题是:这对性能有影响吗?@Raghu,你应该用所有这些细节更新你的问题为什么?问题很清楚(即使没有上述细节)。上面的回答是关于指导的,并没有回答我的问题。但是有一个小小的更正:我收到的异常是我自己做的。我发现了一个bug。但是我关于放弃会话的问题仍然存在。请考虑一下。如果你没有明确关闭会话,客户端正在消耗资源,让它闲置和运行它用于该会话的下一条消息或断开连接,而不是处理另一个会话的消息。