我正在尝试使用 immutant 来管理跨 HornetQ 和 mysql 的事务。据我了解文档,为此我必须使用 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:您无法从 XA 上下文创建子上下文”。来自 (msg/listen) 调用。我究竟做错了什么?