Azure服务总线接收带有子进程的消息

Azure服务总线接收带有子进程的消息,azure,async-await,azureservicebus,azure-webjobs,Azure,Async Await,Azureservicebus,Azure Webjobs,我原以为我的问题与“Azure服务总线:如何更新锁?”相关,但我尝试了RenewalLockAsync 这里是关注点,我正在从启用会话的ServBus接收消息,因此我获得会话,然后接收消息。好吧,麻烦来了 每条消息还有两个额外的过程要完成。将消息手动转换/获取为其他对象,然后发送到卡夫卡主题(流)。请注意,在这种疯狂的基础上,它完全是异步的。我的团队负责人坚持认为这两个子流程可以添加到接收流程(ReceiveAsync)中,并在其他两个流程完成后调用session.CompleteAsync()

我原以为我的问题与“Azure服务总线:如何更新锁?”相关,但我尝试了RenewalLockAsync

这里是关注点,我正在从启用会话的ServBus接收消息,因此我获得会话,然后接收消息。好吧,麻烦来了

每条消息还有两个额外的过程要完成。将消息手动转换/获取为其他对象,然后发送到卡夫卡主题(流)。请注意,在这种疯狂的基础上,它完全是异步的。我的团队负责人坚持认为这两个子流程可以添加到接收流程(ReceiveAsync)中,并在其他两个流程完成后调用session.CompleteAsync()

好吧,我要说的是,我一直在使用这种架构“MessageSession上的会话锁已过期。接受新的MessageSession”。我甚至还没有把《送卡夫卡》的部分具体化,它只是被嘲弄了一下,所以一旦具体化,就需要更长的时间

在子进程之后执行session.CompleteAsync()甚至有点道理吗?还是在成功接收消息后不应该执行session.CompleteAsync(),然后转到其他处理?我认为单独的任务更合适,但他还是不明白这个想法

我感谢所有的见解和意见,谢谢

“MessageSession上的会话锁已过期。接受新的MessageSession。”表示以下两种情况之一:

  • 锁已打开太长时间,在这种情况下,在它过期之前调用“RenewLockAsync”会有所帮助
  • 消息锁已通过调用CompleteAsync、ForwardAsync、DeadLetterAsync等显式释放,这表明存在错误,因为锁在释放后无法使用