如何配置Spring侦听器以在每个会话中从Solace接收多个JMS消息?我当前的JMS配置如下:
@Bean
public DefaultJmsListenerContainerFactory listenerContainerFactory(ConnectionFactory connectionFactory, @Value("${jms.max-listeners}") Integer maxListeners) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setConcurrency("1-" + maxListeners);
factory.setSessionAcknowledgeMode(Session.SESSION_TRANSACTED);
factory.setSessionTransacted(true);
factory.setCacheLevel(DefaultMessageListenerContainer.CACHE_CONSUMER);
return factory;
}
@JmsListener(containerFactory = "listenerContainerFactory", destination = "${jms.my-queue}")
public void receive(String messages) {
try {
...
} catch (Exception e) {
...
}
}
有效载荷必须是单个消息,但是我想在每个事务中消耗很多,以便能够将持久性批处理持久化到我的持久性存储中。
通常这是通过Solace Native API完成的,但是我想用Spring抽象化我们的JMS实现,因为它减轻了该API附带的讨厌的样板。