Я вызываю JMSTemplate.receive () в цикле на недолговечном подписчике. Если я отправлю много сообщений в тему, некоторые сообщения будут потеряны на получателе.Потеря сообщений происходит после возврата JMSTemplate.receive (), но до следующего вызова JMSTemplate.receive ().
Это ожидаемое поведение?или что-то не так со мной?
Я использую следующий код:
@Bean
public ConnectionFactory jmsConnectionFactory() {
try {
ConnectionFactory target = (ConnectionFactory) jndiTemplate().lookup("cn=mqtest-cf");
CachingConnectionFactory factory = new CachingConnectionFactory(target);
factory.setClientId("testClientId");
return factory;
} catch (NamingException e) {
throw new RuntimeException("Failed to lookup connection factory", e);
}
}
@Bean
public JmsTemplate jmsTopicTemplate() {
JmsTemplate t = new JmsTemplate(jmsConnectionFactory());
t.setDestinationResolver(destinationResolver());
t.setReceiveTimeout(5000);
t.setDefaultDestinationName(DEST_TOPIC);
t.setPubSubDomain(true);
return t;
}
for(int i=0; i<1000; i++) {
String msg = (String) jmsTopicTemplate.receiveAndConvert();
System.out.println(msg);
}