我正在使用 spring boot 2 向主题发送 jms 消息。
当我有一个持久订阅者使用 jmsListener 指向 DefaultJmsListenerContainerFactory bean 时,配置了 clientId、subscripionDurable、pubSubDomain。
@Bean
public JmsListenerContainerFactory<?> myDurableAFactory(ConnectionFactory connectionFactory,DefaultJmsListenerContainerFactoryConfigurer configurer) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
configurer.configure(factory,connectionFactory);
factory.setClientId("id1");
factory.setSubscriptionDurable(true);
factory.setConcurrency("2");
factory.setPubSubDomain(true);
return factory;
有了一个持久订阅者,它就可以正常工作。 因此,如果我希望消息被 2 个不同的持久订阅者使用,那么我创建另一个 jmsListener,指向另一个具有不同 clientId 的 DefaultJmsListenerContainerFactory。
我注意到消息被消费了,但只有一个持久订阅者,任一订阅者。我希望消息被双方消费。 我正在使用 OracleAq。
我是否缺少设置?
通过将每个持久订阅者的@JmsListener 订阅更改为不同来修复。