代码之家  ›  专栏  ›  技术社区  ›  Makky

未接收来自主题的ActiveMQ消息

  •  2
  • Makky  · 技术社区  · 6 年前

    我的情况很奇怪。我在听一个话题

    只要服务器启动并运行,我就可以收听消息。但是,当我停止服务器和消息到达队列,当服务器再次启动时,我无法使用这些消息。

    @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.borker.username=管理员jsa.activemq.borker.password=管理员

    jsa.activemq.topic=jsa-主题spring.jms.pub-子域=真

    查看队列中的消息

    enter image description here

    但在启动服务器时,我得不到它。

    0 回复  |  直到 4 年前