我知道有很多关于message driven beans
和交易的问题,但是我无法找到答案(我认为)必须是常见的情况。
我有一个可以调用来发送电子邮件的服务。当它被调用时,它会在表格中创建电子邮件记录,然后将ID推送到ActiveMQ
进行处理。到目前为止一切都很好,但是队列选择了ID并尝试在提交事务之前发送电子邮件,并且电子邮件不在数据库中。
服务本身是交易性的,但它也可能是更大交易的一部分。
处理此方案的最佳方法是什么?我正在Consumer
中使用Thread.sleep工作;然而这感觉很脏...
(我不是在使用Spring)
答案 0 :(得分:1)
您可以拥有一个执行常规操作的事务,并在表中插入电子邮件。不要在转移中发送邮件。
然后(事务成功)有一个进程通过转发到排队服务来清除电子邮件表。
答案 1 :(得分:0)
也许在保留邮件后立即刷新会有帮助吗?
我真的很想知道如何解决这个问题,因为我们在工作中的应用程序中存在类似的问题。