本地与全球交易

时间:2018-10-24 01:54:26

标签: spring jms spring-transactions jta transactional

我编写了一个代码,该代码从一个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();
    }

现在我几乎没有疑问:

  1. 此代码段足以实现此行为 交易性的?
  2. 这是否被视为本地或全局事务用例(请注意,涉及两个JMS服务器,但是在我处理JMS会话时,它真的很重要)吗? 我知道很多官方文档都像春天那样谈论它,但是像上述情况一样,决策没有明确的界限。

  3. 我真的需要这里的JTA吗?使用JTA的实际用例是什么?

0 个答案:

没有答案
相关问题