我正在使用 azure service bus 消息传递,因为我遇到了一些奇怪的问题。
我用“peeklock”模式创建了一个订阅客户端。使用 SubscriptionClient.ReceiveBatch(500) 方法并收到“n”条消息。然后循环这些消息并执行我的过程,如果我的过程成功完成,则使用 BrokeredMessage.Complete() 从队列中删除该消息。如果该过程中有任何问题,我正在使用 BrokeredMessage.Abandon() 来更新消息。但是消息不会从队列中删除。
经过一些分析,我怀疑我的过程需要更多时间,并且消息锁在过程完成之前就过期了。
然后我决定,在收到来自队列的消息后,我将这些消息推送到本地字符串数组中,然后调用 BrokeredMessage.Complete()。所以不存在锁过期的可能。但是仍然没有从队列中删除消息。
请给出一些想法来解决这个问题。