【发布时间】:2016-11-01 11:59:36
【问题描述】:
代码...
@Transactional
@JmsListener(destination = "QueueA")
public void process(String input) {
doSomethingWhichMayThrowException(input);
}
考虑以下情况...
- 事务已启动(使用 Spring @Transactional 注释)
- 从 QueueA 读取持久性 JMS 消息(队列使用磁盘作为消息存储)
- 磁盘已满,不接受任何写操作
- 发生异常,事务回滚
消息丢失了吗?
如果不是,那么如何从事务下的队列中读取消息(步骤 2)?
是否使用了某种队列浏览器,以便从队列中读取消息但不被消费?
【问题讨论】:
-
它取决于供应商,但通常它适用于从驱动程序到消息代理的 ack。
标签: java transactions jms spring-transactions spring-jms