以下是我的要求: 1. MDB收到一条消息
在另一个会话bean中触发异步方法-异步,因为该方法将是一个运行时间很长的线程,并且我们不想长时间保持MDB线程。异步方法从数据库读取记录,对其进行处理并调用#3。
写入另一个MQ,然后将一些数据插入DB。 POST到MQ 和 DB INSERT 应该处于一项事务中。
这是实现:
对于#1-使用MDB-容器管理的事务,没有任何事务属性。
对于#2-无状态会话Bean-容器托管的异步,但事务属性为 NOT_SUPPORTED (不支持,因为这是一个长期运行的线程,因此请不要这样做)不想让交易超时)。
For#3-无状态会话Bean(对于在2中读取的每个记录,从#2调用-循环执行)-事务属性- REQUIRES_NEW ,因为此方法发布到MQ和Inserts进入数据库。
问题:
运行时异常-当我从#3抛出运行时异常时,不会处理下一条记录-会话bean只会退出。
异常-引发自定义异常时,如果数据库插入失败,队列中的消息将不会恢复。
实现或解决此问题的最佳方法是什么。
我会尽力提供详细信息-感谢您的帮助。