專案中使用了activemq,用mq來處理solr索引的更新和建立,由於索引經常出現一些莫名其妙的問題,後來查了很久發現是事務沒有回滾的原因,資料庫的事務已經回滾了,但是jms發出去的訊息已經被消費掉了,索引已經更新了,但是資料庫的記錄沒有更新。後來找到了乙個比較成熟的jta事務工具,atomikos。
1.拷貝jta.properties到classpath中,並修改為如下內容
com.atomikos.icatch.service = com.atomikos.icatch.standalone.usertransactionservicefactory2.修改spring中資料來源的設定方式,修改如下com.atomikos.icatch.no_file = true
com.atomikos.icatch.enable_logging = false
com.atomikos.icatch.console_log_level = warn
zzgrid_main_jdbc_resource3.jms傳送訊息的時候設定事務user
password
jdbc:mysql://localhost:3306/test;user=ro
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...