第 20 章 配置预确认
JMS 指定三种确认模式:
- AUTO_ACKNOWLEDGE
- CLIENT_ACKNOWLEDGE
- DUPS_OK_ACKNOWLEDGE
在某些情况下,您可以在失败时丢失消息,因此在将消息发送到客户端之前确认服务器上的消息会有意义。JBoss EAP 消息支持这种额外模式,称为预确认模式。
在传输前在服务器上预确认的缺点是,如果服务器的系统在确认消息后崩溃,但在将消息传送到客户端之前,该消息将会丢失。在这种情况下,消息将丢失,系统重启时将不会恢复。
根据您的消息传递情况,预先确认模式可以避免额外的网络流量和 CPU 使用量,代价是处理消息丢失。
预认证的一个用例是股价更新消息。通过这些消息,在崩溃时丢失消息可能是合理的,因为下一个价格更新消息将很快到达,从而覆盖了先前的价格。
注意
如果您使用预确认模式,您将丢失被使用消息的事务语义,因为它们是首先在服务器上被确认,而不是在您提交事务时确认。
20.1. 配置服务器 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
可以使用管理 CLI 将预确认 属性设置为
确认模式:
true
,从而将连接工厂配置为使用预
/subsystem=messaging-activemq/server=default/connection-factory=RemoteConnectionFactory:write-attribute(name=pre-acknowledge,value=true)
/subsystem=messaging-activemq/server=default/connection-factory=RemoteConnectionFactory:write-attribute(name=pre-acknowledge,value=true)