2014-02-24 23 views

回答

1

您可以通过使用其他替代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()回报执行。

+0

Ya tambiem ho piensato una vez。 Ahora com tua意见estoy mas confiado de llamar MDB 2 vezes。格拉西亚斯。 – Takeshinho

+1

Jajaj,bien,Buena Suerte! :)Kōun! – Camilo

相关问题