保存实体然后排队到 RabbitMQ 的模式

Pattern for saving an Entity then queuing to RabbitMQ

我遇到了 RabbitMQ 的计时问题。我有一个通知 class,我正在尝试从 tomcat 下的 Web 服务 运行 保存到数据库,然后将该实体 ID 排队到 RabbitMQ 以供消费者提取。

问题是消息在事务完成之前就已经排队,因此消费者找不到记录。

我尝试通过 Propagation.REQUIRES_NEW 为保存部分创建一个单独的事务,但我收到一个 Hibernate 异常,说明如下:

org.hibernate.HibernateException: 非法尝试将代理与两个打开的会话相关联

是否有人们通常用来解决这个问题的模式?

感谢任何帮助。

回应你在我之后的评论;一个简单的解决方案可能是使用链式事务管理器,如 Dave Syer's JavaWorld Article.

中所述