Spring JmsTemplate特定于目的地的消息持久性

问题描述

我正在使用JmsTemplate(spring-jms-5.2.8)将消息发送到嵌入式ActiveMQ代理,涉及多个主题。我希望某些主题可以持久化(发送给他们的消息可以持久化),而有些则不需要。不幸的是,JmsTemplate似乎正在全局配置传递模式=通过它发送的所有消息(要求启用QOS)。

直接在邮件上设置传递模式无济于事,因为稍后它会被覆盖。

jmsTemplate.convertAndSend(destination,event,message -> {
    message.setJMSDeliveryMode(XXX);
    return message;
});

什么是最好的解决方案?确实,通过JmsTemplate传递的所有消息都必须是持久性还是非持久性?我必须创建两个单独的JmsTemplates吗?那是个好方法吗?我要传入的连接工厂呢?可以为两个模板使用相同的连接工厂吗?

谢谢。

解决方法

我必须创建两个单独的JmsTemplates吗?那是个好方法吗?

是;最简单的解决方案是定义2个模板。

那上面的连接工厂呢?

??不清楚“在上方”是什么意思。

您可以在每个模板中使用相同的工厂;他们将共享连接。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...