跳到主要内容

在事务中发布消息

要在事务中发布保证消息(Guaranteed messages),必须首先在事务性会话中建立一个生产者流:

  • 对于 Java RTO、C 和 .NET API,如果以下事务性会话属性已启用(这是默认行为),则在成功创建事务性会话时,会自动在该事务性会话中创建一个生产者流:
    • Java RTO API:TransactedSessionHandle.PROPERTIES.HAS_PRODUCER
    • C API:SOLCLIENT_TRANSACTEDSESSION_PROP_HAS_PRODUCER
    • .NET API:TransactedSessionProperties.HasProducer

建立生产者流后,可以通过以下列出的发送方法或函数之一发布保证消息。

在事务中,事件代理会暂存发布的消息,直到客户端发出提交指令,这些消息才会被传递到它们的目的地。成功的提交会将消息传递到目的地并清除暂存信息。

PubSub+ 消息 API使用方法
Java RTOTransactedSessionHandle.send(...)
CsolClient_transactedSession_sendMsg(...)
.NETITransactedSession.send(...)

如何在事务中发送消息


端点的消息丢弃行为如何影响事务

当事务中发布的消息在提交时无法成功暂存到其目标端点时,该消息会被丢弃。在这种情况下,提交是否成功取决于端点的消息丢弃行为属性,该属性决定了端点如何处理被丢弃的消息。

如果端点的消息丢弃行为属性未启用,则消息会被“静默”丢弃(即端点丢弃消息,但向客户端返回提交成功的响应),提交操作完成。在这种情况下,该消息仍可以被暂存到其他可能的目标端点。

默认情况下,配置队列时会启用消息丢弃行为属性,而配置主题端点时则不会启用该属性。

有关端点消息丢弃行为属性以及可能导致端点不暂存并丢弃消息的条件的更多信息,请参阅“定义端点属性”。