我的状况很奇怪。我正在听一个话题
只要服务器已启动并正在运行,我就能够收听消息。但是我很快停止了服务器,并且消息到达队列中,当服务器再次启动时,我无法使用这些消息。
@Configuration
public class ConnectionFactoryConfig {
@Value("${jsa.activemq.broker.url}")
String brokerUrl;
@Value("${jsa.activemq.borker.username}")
String userName;
@Value("${jsa.activemq.borker.password}")
String password;
/*
* Initial ConnectionFactory
*/
@Bean
public ConnectionFactory connectionFactory() {
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
connectionFactory.setBrokerURL(brokerUrl);
connectionFactory.setUserName(userName);
connectionFactory.setPassword(password);
return connectionFactory;
}
// @Bean // Serialize message content to json using TextMessage
public MessageConverter jacksonJmsMessageConverter() {
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
converter.setTargetType(MessageType.TEXT);
// converter.setTypeIdPropertyName("_type");
return converter;
}
@Bean
public JmsListenerContainerFactory<?> jsaFactory(ConnectionFactory connectionFactory,
DefaultJmsListenerContainerFactoryConfigurer configurer) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setPubSubDomain(true);
// factory.setMessageConverter(jacksonJmsMessageConverter());
configurer.configure(factory, connectionFactory);
factory.setSessionTransacted(true);
factory.setSubscriptionDurable(true);
factory.setClientId("TEST_CLIENT");
return factory;
}
}
订户
@Component
public class JmsSubcriber {
@JmsListener(destination = "${jsa.activemq.topic}")
public void receive(String msg) {
System.out.println(new Date() + "::Recieved Message: " + msg);
}
}
属性文件
jsa.activemq.broker.url = tcp:// localhost:61616
jsa.activemq.borker.username = admin jsa.activemq.borker.password = admin
jsa.activemq.topic = jsa-topic spring.jms.pub-sub-domain = true
查看我可以识别的队列中的消息
但是在启动服务器时我没有得到它。