事务实现
当使用Artemis提交或回滚事务时,提交或回滚的请求将发送到服务器,并且将阻塞客户端,直到从服务器收到提交或回滚的生效响应。
当在服务器上收到提交或回滚时,它将被提交到日志,并且根据参数journal-sync-transactional的值为true,服务器将确保在发送响应到客户端之前将提交或回滚操作持久化存储。如果此参数的值为false,直到某个时间将响应发送到客户端,实际上不会对提交或回滚操作进行持久化存储。如果服务器发生故障,这可能意味着提交或回滚永远不会持久化存储。此参数的默认值为true,因此客户端可以确保在提交或回滚调用返回时所有事务提交或回滚都已持久化存储。将此参数设置为false可以提高性能,但会牺牲一些事务持久性损失。
非事务消息的发送
如果使用非事务会话将消息发送到服务器,则可以将Artemis配置为阻塞发送的调用,直到消息明确到达服务器,并且响应已发送回客户端,在此期间客户端都处于阻塞状态。这个配置可以独立于持久和非持久消息的配置,并由以下两个URL参数确定:
- blockOnDurableSend:如果将此设置为true,那么在非事务会话中的所有发送持久化消息调用都会进行阻塞,直到消息到达服务器,并且已经发回响应。默认值为false。
- blockOnNonDurableSend:如果将此设置为true,那么在非事务