消息驱动的bean和事务

时间:2016-02-23 12:26:19

标签: java activemq cdi deltaspike

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

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

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

处理此方案的最佳方法是什么?我正在Consumer中使用Thread.sleep工作;然而这感觉很脏...

(我不是在使用Spring)

2 个答案:

答案 0 :(得分:1)

您可以拥有一个执行常规操作的事务,并在表中插入电子邮件。不要在转移中发送邮件。

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

答案 1 :(得分:0)

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

我真的很想知道如何解决这个问题,因为我们在工作中的应用程序中存在类似的问题。