【问题标题】:Will abandoned session ids have any impact on azure service bus performance?废弃的会话 ID 会对 Azure 服务总线性能产生影响吗?
【发布时间】:2017-04-07 18:52:02
【问题描述】:

场景: 我们将消息(相同类型)从多个发件人发送到一个队列。每个发件人将发送一组消息,这些消息通过给定组的唯一会话 ID 绑定在一起。组数没有限制。在消费端,我们有多个接收者。

问题: 如果接收者没有在组中的最后一条消息上调用 await session.CloseAsync(),那么在我们的 azure 服务总线实例中是否会对性能产生影响?

【问题讨论】:

    标签: azure azureservicebus


    【解决方案1】:

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

    有一个很好的sample with explanation Clemens 的会话如何工作,您也可以看看。

    【讨论】:

    • 在接收者处理给定会话的队列中的所有当前消息后,它似乎要等待大约 60 秒才能调用消息接收者的 OnCloseSessionAsync 方法,这实际上导致了以下异常,该异常正在报告中SessionHandlerOptions.ExceptionReceived 处理程序。以下是异常的详细信息: options.ExceptionReceived:操作:OnCloseSessionAsync 异常:System.NullReferenceException:对象引用未设置为对象的实例。在 Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1。 ...
    • 此外,一旦会话被接收者(服务总线客户端)关闭,它似乎可以很好地处理其他会话。我没有明确地关闭会话。所以问题是:这对性能有影响吗?
    • @Raghu,你应该用所有这些细节更新你的问题
    • 为什么?这个问题很清楚(即使没有上述细节)。上面的答案是关于指导的,并没有解决我的问题。然而,一个小的更正:我收到的例外是我自己做的。我发现了一个错误。但是我关于废弃会话的问题仍然存在。
    • 想一想。如果您没有显式关闭会话,则客户端会浪费其资源闲置并等待该会话的下一条消息或连接断开,而不是处理另一个会话的消息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    • 2012-03-11
    • 1970-01-01
    • 2014-04-08
    • 2017-06-12
    • 2017-04-25
    • 2012-08-22
    相关资源
    最近更新 更多