HornetQ と mysql の間でトランザクションを管理するために immutant を使用しようとしています。ドキュメントを理解しているので、これを行うには XA トランザクションを使用する必要があります。これは、アプリ サーバー内ではなくスタンドアロン アプリを実行しているためです。
ただし、:xa? を設定しようとすると? 私のアプリケーションのコンテキストでは、リスナーをセットアップするときに例外が発生します。
(ns example
(:require [immutant.messaging :as msg]))
(def capture (atom nil))
(let [ctx (msg/context :host "localhost" :xa? true)
queue (msg/queue "example" :context ctx)]
(reset! capture nil)
(msg/listen queue (fn [m] (reset! capture m)))
(msg/publish queue {:my :msg}))
これにより、「java.lang.IllegalStateException: You can't create a child context from an XA context.」がスローされます。(msg/listen) 呼び出しから。私は何を間違っていますか?