2

我知道有很多关于message driven beans交易的问题,但是我无法找到(我认为)必须是常见情况的答案。

我有一个可以调用来发送电子邮件的服务。当它被调用时,它会在表中创建电子邮件记录,然后将 ID 推送到ActiveMQ进行处理。到目前为止一切都很好,但是队列会选择 ID 并尝试在事务提交之前发送电子邮件,并且电子邮件不是数据库中的。

服务本身是事务性的,但它也可能是更大事务的一部分。

处理这种情况的最佳方法是什么?我现在正在使用 Thread.sleep Consumer;然而这感觉很脏......

(我没有使用弹簧)

4

2 回答 2

1

你可以有一个事务来做通常的事情,并在表格中插入电子邮件。不要在交易中发送邮件。

然后之后(事务成功)有一个进程通过转发到排队服务来清除电子邮件表。

于 2016-02-23T12:52:27.510 回答
0

也许在保留邮件后立即进行刷新会有所帮助?

我实际上很想知道如何解决这个问题,因为我们在工作中的应用程序中遇到了类似的问题。

于 2016-02-23T14:22:20.207 回答