【Azure 服务总线】查看Service Bus中消息多次发送的日志信息,消息是否被重复消费

问题描述

使用Service Bus,发现消息被重复消费。如果要查看某一条消息的具体消费情况,需要那些消息的属性呢?

 

问题解答

使用Azure Service Bus,当消费发送到服务端后,就会生产相关属性,如Partition Key,Message ID,Enqueued Time, Sequence Number等。这些信息可以直接在Server Bus的服务端海量日志中定位到一条消息的具体日志。

例如,发现一条消息ID为 f10daa8d-193a-4dc1-b6a8-768a3f66fdaa的消息,存在多次消费的情况。

查看日志就发现:

 

根据上图,确实存在消息从Service Bus服务端传输到消费端总次数为5次。只是前四次都在30秒的锁定时间中都没有收到消费端的Complete信号,所以都记录为放弃,未完成的状态,直到第五次消费后,状态为Completed。

这是因为客户端使用 PeekLock 模式消费时,会对当前消息启用排他锁(默认锁定时间30秒),当30秒内没有收到消费端的Compete状态时,则标记为Abandoned。 

 

参考资料

处置接收操作 PeekLock :https://docs.azure.cn/zh-cn/service-bus-messaging/message-transfers-locks-settlement#peeklock

 

posted @ 2022-12-04 21:35  路边两盏灯  阅读(77)  评论(0编辑  收藏  举报