我的情况很奇怪。我在听一个话题
只要服务器启动并运行,我就可以收听消息。但是,当我停止服务器和消息到达队列,当服务器再次启动时,我无法使用这些消息。
@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;
@Bean
public ConnectionFactory connectionFactory() {
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
connectionFactory.setBrokerURL(brokerUrl);
connectionFactory.setUserName(userName);
connectionFactory.setPassword(password);
return connectionFactory;
}
public MessageConverter jacksonJmsMessageConverter() {
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
converter.setTargetType(MessageType.TEXT);
return converter;
}
@Bean
public JmsListenerContainerFactory<?> jsaFactory(ConnectionFactory connectionFactory,
DefaultJmsListenerContainerFactoryConfigurer configurer) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setPubSubDomain(true);
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.borker.username=管理员jsa.activemq.borker.password=管理员
jsa.activemq.topic=jsa-主题spring.jms.pub-子域=真
查看队列中的消息
但在启动服务器时,我得不到它。