masstransit - MassTransit - 如何处理 MessageLockLostException 场景
问题描述
如果消费者正在执行并且由于持续时间到期或间歇性连接丢失而同时丢失消息的锁定-如何从消费者内部潜在地处理这种情况,因为当前如果消费者完成,MessageLockLostException
则抛出另一个实例消费者已经开始了。
为了解决这个问题 - 我们编写了幂等消费者,然而,这仍然是一个问题,第一个实例(在失去锁之前执行的那个)会引发异常,因为这会导致消息{queueName}_error
默认通过 MassTransit 管道似乎忽略了这样一个事实,即此时消息锁已丢失,并且已启动同一消息的新消费者实例。
所以这个困境的总结是我们可以有效地得到一个成功确认的消息以及它在错误队列中。我正在寻找是否有人可能成功地处理了类似的情况,或者是否有一些钩子MassTransit
让消费者可以确定它是否仍然对正在处理的消息具有活动锁定。
解决方案
推荐阅读
- javascript - Vue 3 指令 - 如何将项目数组推送到指令
- api - 从本地存储而不是 API 获取用户数据是个好主意吗?
- php - 作曲家安装不起作用 php-alpine docker
- python - Python3——两列的熊猫交叉表
- c++ - 返回具有较少参数的函数指针
- fuse - Arch 的 Debian 的 libfuse-dev 等价物
- python - python 3.9.1中的pygame
- spring - 如何处理这样的分配:Spring 项目、H2 数据库、简单模型(字符串名称、BigDecimal 价格)
- c++ - 缓慢的 nlopt 优化问题(可能是 pinocchio 和 cpp 编译问题?)
- powershell - Import-CSV 弄乱文件名