MessageLockLostException无缘无故发生。我们将锁定时间设置为1分钟,并在处理20秒后间歇性地抛出此异常。这是无缘无故发生的。我们已经注意到,它通常在一分钟的结尾或一分钟开始。我的意思是:
->消息在8:30:42到达服务总线主题
->函数在8:30:42收到消息显然开始处理
->该进程的响应时间为19.4秒
->记住我的锁是1分钟
我的函数处理做什么
-> at 8:30:44 I made a call out to serivceX (http) (2 seconds later)
-> this responded in 341 milliseconds
-> at 8:31:02 the MessageLockLostException is being thrown
嗯……也许是因为该函数仍在处理这一分钟,并且某种程度上是因为8:31:59 .. 8:32:00 .. 8:32:01发生了变化???在这里跟随我...
->异常后,消息锁被释放,并由另一个函数实例在8:31:02处理,并在743毫秒内完成
再次发生同样的事情
->消息在8:30:37到达服务总线主题
->函数在8:30:39收到消息显然开始处理(2秒后)
->该进程的响应时间为19.5秒
->记住我的锁是1分钟
我的函数处理做什么
-> at 8:30:55 I made a call out to serivceX (http)
-> this responded in 1.4 seconds
-> at 8:30:58 the MessageLockLostException is being thrown
Hmmm…可能是因为函数仍在处理中,并且分钟即将结束8:30:59?在这里跟随我...
->异常后,消息锁被释放,并由另一个函数实例在8:31:38处理,并在1.8秒内完成
再次发生同样的事情
->消息在10:43:01到达服务总线主题
->函数在10:43:02接收消息显然开始处理(1秒后)
->该进程的响应时间为19.3秒
->记住我的锁是1分钟
我的函数处理做什么
-> at 10:43:02 I made a call out to serivceX (http)
-> this responded in 341 milliseconds
-> at 10:43:21 the MessageLockLostException is being thrown
Hmmm…可能是因为该函数开始处理并在分钟的开始10:43:02 ???在这里跟随我...
->异常后,消息锁被释放,并由另一个函数实例在10:44:02处理,并在2.0秒内完成
再次发生同样的事情
->消息在2:24:31到达服务总线主题
->函数在2:24:35接收消息显然开始处理(4秒后)
->该进程的响应时间为19.3秒
->记住我的锁是1分钟
我的函数处理做什么
-> at 2:24:35 I made a call out to serivceX (http)
-> this responded in 444 milliseconds
-> at 2:24:54 the MessageLockLostException is being thrown
Hmmm…可能是因为该功能在分钟结束时仍在处理中,将近2:24:54 .. 2:24:55,以此类推?在这里跟随我...
->异常后,消息锁被释放,并由另一个函数实例在2:25:35处理,并在1.9秒内完成
再次发生同样的事情
->消息在2:30:55到达服务总线主题
->函数在2:30:56收到消息显然开始处理(1秒后)
->该进程的响应时间为19.2秒
->记住我的锁是1分钟
我的函数处理做什么
-> at 2:30:56 I made a call out to serivceX (http)
-> this responded in 468 milliseconds
-> at 2:31:15 the MessageLockLostException is being thrown
嗯…对此没有任何意义,但请仍然在这里关注我…
->异常后,消息锁被释放,并由另一个函数实例在2:31:56处理,并在1.6秒内完成
再次发生同样的事情
->消息在11:52:55到达服务总线主题
->函数在11:52:56收到消息显然开始处理(1秒后)
->该进程的响应时间为19.3秒
->记住我的锁是1分钟
我的函数处理做什么
-> at 11:52:56 I made a call out to serivceX (http)
-> this responded in 509 milliseconds
-> at 11:53:15 the MessageLockLostException is being thrown
嗯…对此没有任何意义,但请仍然在这里关注我…
->异常后,消息锁被释放,并由另一个函数实例在11:53:55处理,并在1.8秒内完成
注意所有零星的故障都在19.2-19.4秒内出现……但是这些故障之间并没有一致性……
在抛出MessageLockLostException之后,下一个函数成功