gpt4 book ai didi

azure - 在启用 Azure ServiceBus session 的订阅中,为什么我会在多个订阅者实例上收到具有相同 session ID 的消息

转载 作者:行者123 更新时间:2023-12-03 03:38:20 24 4
gpt4 key购买 nike

我在服务总线主题上有一个启用 session 的订阅,并且有四个针对此订阅运行的订阅客户端。

我在 100000 个随机 session 中向该主题发布 10000 条消息,并查看我的输出,我可以看到多个订阅客户端在几秒钟内处理同一 session ID 的消息,即

<表类=“s-表”><标题> session ID客户端A客户端B <正文>1234处理时间为 10:30:041234处理时间为 10:30:291234处理时间为 10:31:00

这是在 session 空闲超时默认值 60 秒的情况下完成的。

然后,我将 session 空闲超时设置为 2 秒的时间跨度。每个 SessionProcessor 有 100 个 MaxConcurrentSessions,并且 AutoCompleteMessages 设置为 false。

我还观察到很多“ session 锁丢失”错误。

当我收到 session 锁定异常时, session 将在不同的客户端上启动,并在第二个客户端上处理相同的消息,该消息已经在出现 session 锁定异常的客户端上处理过。

我的问题是,在尝试在 CompleteMessageAsync 上调用 ProcessSessionMessageEventArgs 之前,我是否需要记录已处理的消息 ID,以便我可以检查正在使用的每条消息,以避免再次处理它,或者是否有我不知道的原因我的 session 失去 session 锁定 - 当调用 CompleteMessageAsync 之前超过 session 空闲时间时是否会发生这种情况?

这一切都在测试代码中,因此我的处理器只是写入控制台并执行非长时间运行的任务。

最佳答案

使用主题时,消息将被复制并转发到所有订阅,其中 session 对接收者可见。

如果您不希望所有接收者处理每个 session ,那么您应该只使用一个队列,所有接收者都在监听它。然后,每个 session 及其消息集仅由一个接收者处理一次。

关于azure - 在启用 Azure ServiceBus session 的订阅中,为什么我会在多个订阅者实例上收到具有相同 session ID 的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72451535/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com