【发布时间】:2021-07-12 16:48:44
【问题描述】:
我们有这样一种情况,当记录更新时,我们希望将一条消息排队以供应用程序读取,然后应用程序将读取该消息并对其进行处理(将其路由到某处的 ESB 上)。
提出的问题是“如果我们从队列中读取消息,然后应用程序在消息转发之前失败了怎么办?”有没有办法获取消息,对其采取行动,然后一旦确定它已被处理,就将其从队列中删除?
有没有更好的方法来解决这个问题?到目前为止,他们创建的解决方案涉及完全删除 SB 并编写触发器以将数据放入表中,然后对其进行轮询、处理和删除。
【问题讨论】:
-
无论您使用Service Broker队列还是常规表,答案都是使用事务。参见例如:rusanu.com/2010/03/26/using-tables-as-queues