跳到主要内容

在XA事务中发布消息

要向队列或主题目标发布消息,必须在XA会话中创建一个MessageProducer,以建立一个生产者流。

要创建一个消息生产者,需要在获取的XA会话中调用XASession.createProducer(Destination destination)

然后,在XA会话中发布消息,调用MessageProducer.send(...)

在XA会话中,调用XAResource.start(...)之后发布的消息,事件代理会将这些消息暂存并分配给事务分支。然而,这些消息在事件代理上不会被发送到它们的目的地,直到调用XAResource.commit(...)。成功的提交会将消息发送到它们的目的地,并移除暂存信息。

在XA会话中,调用XAResource.start(...)之前发布的消息,它们的处理方式与在普通会话中发布的消息相同。也就是说,它们不是“事务性”的消息。

端点消息丢弃对XA事务的影响

当事务分支中发布的消息在提交时无法成功暂存到其目标端点时,该消息将被丢弃。在这种情况下,端点的reject-msg-to-sender-on-discard属性决定了提交是否成功。

对于普通基于会话的事务和基于XA会话的事务,端点消息丢弃的行为是相同的。有关更多信息,请参阅端点消息丢弃行为如何影响事务。