ActiveMQ的事务:
当使用MQ时,可以通过Connection创建多个Session上下文,创建Session时有两个参数
Session createSession(boolean transacted, int acknowledgeMode);
参数1:是否开启事务 布尔型 true/false
参数2:签收模式 自动签收和手动签收
如果参数一是true ,则表示开启了事务 发送消息的业务执行完 后,需要调用commit()方法提交 ,否则MQ将接收不到消息、
session.commit();
ActiveMQ的签收模式:
手动签收和自动签收:
手动签收一般是客户端的操作,参数2设置成:CLIENT_ACKNOWLEDGE 则需要手签收,调用ACK的方法进行签收,如果客户端不调用ack方法 ,将无法接收消息
自动签收模式下,客户端会自动签收消息。
事务模式下的签收:
事务的优先级大于签收,当事务模式下。如果事务没有提交,即使客户端签收也不会消费消息。