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