Spring JmsTemplate 目标特定消息持久化

Spring JmsTemplate destination specific message persistence

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

直接在邮件上设置传递模式没有帮助,因为它稍后会被覆盖。

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

最好的解决办法是什么?真的所有通过 JmsTemplate 的消息都必须是持久的还是非持久的?我必须创建两个单独的 JmsTemplates 吗?这是一个好方法吗?我传入的连接工厂怎么样?两个模板可以使用同一个连接工厂吗?

谢谢。

Do I have to create two separate JmsTemplates? Is that a good approach?

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

What about the connection factory above?

??不清楚你所说的“以上”是什么意思。

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