0
我想在MDB的onMessage结束后创建一些进程。我可以让它在调用者线程结束后被授予EJB @asynchronous方法的线程启动吗?
我想我可以使用EJB的@asyncronous来实现它。但是恐怕这个方法可能在调用者线程结束之前开始。
有什么办法可以确保这个异步方法在调用者线程结束后启动,至少调用者线程提交了它自己的事务。
谢谢,和美好的一天。
我想在MDB的onMessage结束后创建一些进程。我可以让它在调用者线程结束后被授予EJB @asynchronous方法的线程启动吗?
我想我可以使用EJB的@asyncronous来实现它。但是恐怕这个方法可能在调用者线程结束之前开始。
有什么办法可以确保这个异步方法在调用者线程结束后启动,至少调用者线程提交了它自己的事务。
谢谢,和美好的一天。
您可以通过使用其他替代MDB,如果你从一个事务中发布消息实现这一目标,该消息将不会被发表,直到出版商事务被提交:
@MessageDriven...
public class MDB1 {
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void onMessage(Message message) {
...
producer.send(msg1); // msg1 will be published at commit of this transaction
...
myMethod1();
}
}
,并
@MessageDriven... // Consumes msg1
public class MDB2 {
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void onMessage(Message message) {
...
myMethod2();
...
}
}
这种方式(使用CMT),消息msg
将不会被发表,直到MDB1.onMessage()
又回来了,所以MDB2.myMethod2()
将前所未有MDB1.onMessage()
回报执行。
Ya tambiem ho piensato una vez。 Ahora com tua意见estoy mas confiado de llamar MDB 2 vezes。格拉西亚斯。 – Takeshinho
Jajaj,bien,Buena Suerte! :)Kōun! – Camilo