支援JMS的JTA事務使用

2021-08-25 23:13:06 字數 979 閱讀 9770

專案中使用了activemq,用mq來處理solr索引的更新和建立,由於索引經常出現一些莫名其妙的問題,後來查了很久發現是事務沒有回滾的原因,資料庫的事務已經回滾了,但是jms發出去的訊息已經被消費掉了,索引已經更新了,但是資料庫的記錄沒有更新。後來找到了乙個比較成熟的jta事務工具,atomikos。

1.拷貝jta.properties到classpath中,並修改為如下內容

com.atomikos.icatch.service =  com.atomikos.icatch.standalone.usertransactionservicefactory

com.atomikos.icatch.no_file = true

com.atomikos.icatch.enable_logging = false

com.atomikos.icatch.console_log_level = warn

2.修改spring中資料來源的設定方式,修改如下

zzgrid_main_jdbc_resource

user

password

jdbc:mysql://localhost:3306/test;user=ro

3.jms傳送訊息的時候設定事務

jmstemplate template = new jmstemplate();template.setsessiontransacted(true);template.setmessageconverter(new solrmessageconvert());

template.convertandsend(solrmessage);

這樣設定之後,在資料庫回滾的時候,jta事務同時生效。

另外加入在一些特殊情況下,需要手動使用jta事務的方法,比如批量更新索引。

trycatch (exception e)

Spring支援JTA事務之JOTM

隨著 www.jzease.com 的擴大,在三個月的時間裡myslq的 從四十幾張,擴到現在的一百多張,以後肯定還會繼續擴大為了更好的管理和執行,著手開始分資料庫,這就涉及到跨資料庫事務,我們使用的是tomcat,它本身不支援xa,供我選擇的就只有spring jta,jta的實現就只有兩種,一種...

batis plus事務使用

service實現類 service transactional propagation propagation.nested,isolation isolation.default,readonly false,rollbackfor restexception.class 加在類上面,下面方法預...

java事務使用

在web.xml中開啟對事物註解的解析 在方法上加上事務註解,propagation屬性在說明在 這裡,rollbackfor指定方法丟擲什麼異常後自動回滾。transactional propagation propagation.required,rollbackfor runtimeexcep...