Spring JMSTemplate在一个事务中接收所有消息

我试图使用Spring JMSTemplate.receive(String)方法以同步模式从队列中获取所有消息.

问题是我总是只收到一条消息.这是代码:

@Transactional
public List

如果我删除了@Transactional注释,我会收到所有消息,但所有消息都是在事务中完成的,所以如果稍后在处理这些消息时会有一个例外,消息将会丢失.

这是我的JMSTemplate bean的定义.

我想要实现的是拥有一个事务,并且在此事务中我想获取所有待处理的消息.

最佳答案
我会回复自己.看起来JMSTemplate不支持它.暂时解决它的唯一方法是扩展JMSTemplate并添加使用JMSTemplate部分的新方法.不幸的是,有些方法是私有的,所以需要复制它们……

public class CustomQueueJmsTemplate extends JmsTemplateDelegate {

  public List

相关文章

这篇文章主要介绍了spring的事务传播属性REQUIRED_NESTED的原...
今天小编给大家分享的是一文解析spring中事务的传播机制,相...
这篇文章主要介绍了SpringCloudAlibaba和SpringCloud有什么区...
本篇文章和大家了解一下SpringCloud整合XXL-Job的几个步骤。...
本篇文章和大家了解一下Spring延迟初始化会遇到什么问题。有...
这篇文章主要介绍了怎么使用Spring提供的不同缓存注解实现缓...