我编写了一个代码,该代码从一个JMS主题读取一条消息,对其进行处理,然后将其放入另一个JMS主题。涉及的JMS主题位于不同的服务器上。请参见下面的代码段。目的是进行第1步和第3步,即从一个主题中读取并写入另一个主题中。我不太在乎第2步。在这里,我们没有任何应用服务器。
public void process(){
try{
topic1Session = createTopic1Subscriber();
topic2Session = createTopic2Publisher();
// step 1
Message msg = readFromTopic1();
// step 2
msg = doSomething(msg);
// step 3
writeOnTopic2(msg);
// Commit if everything goes well
topicSession1.commit();
topicSession2.commit();
}catch(Exception e){
// rollback if anything fails
topicSession1.rollBack();
topicSession2.rollBack();
}
现在我几乎没有疑问:
这是否被视为本地或全局事务用例(请注意,涉及两个JMS服务器,但是在我处理JMS会话时,它真的很重要)吗? 我知道很多官方文档都像春天那样谈论它,但是像上述情况一样,决策没有明确的界限。
我真的需要这里的JTA吗?使用JTA的实际用例是什么?