0

我创建了一个简单的消费者,Amazon MQ但看起来我错过了一些东西,因为每当收到消息时,它都应该调用我的 recevieMessage 方法,但它不起作用。
但是我用 apache active MQ 尝试了这个,它工作得很好。

PS:我也尝试过实现MessageListener类覆盖该onMessage()方法但不起作用。我尝试在 receiveMessage方法中使用不同的参数,如Object, Message, ByteMessage....

public class Receiver {
    @JmsListener(destination = "Queue_Name")
    public void receiveMessage(final  Message consumerMessage) throws JMSException {
    --some logic on data 
    }
}

我的配置:

 @Configuration
    @EnableJms//enable jms
    public class ReceiverConfig {
    @Bean//created a ActiveMQ Connection Factory 
      public ActiveMQConnectionFactory receiverActiveMQConnectionFactory() {
        ActiveMQConnectionFactory activeMQConnectionFactory =
            new ActiveMQConnectionFactory();
        activeMQConnectionFactory.setBrokerURL(brokerUrl);
        activeMQConnectionFactory.setUserName(userName);
        activeMQConnectionFactory.setPassword(passWord);
        return activeMQConnectionFactory;
      }

      @Bean// Uses default Jms Listener Container Factory
      public DefaultJmsListenerContainerFactory jmsListenerContainerFactory() {
        DefaultJmsListenerContainerFactory factory =
            new DefaultJmsListenerContainerFactory();
        factory
            .setConnectionFactory(receiverActiveMQConnectionFactory());

        return factory;
      }

      @Bean
      public Receiver receiver() {
        return new Receiver();
      }
}

每次我启动应用程序时都会收到这个: WARN 12740 --- [206:61616@63304] o.a.activemq.ActiveMQSessionExecutor : Received a message on a connection which is not yet started. Have you forgotten to call Connection.start()? Connection: ActiveMQConnection

4

1 回答 1

0

我忘记在注释中提及我的用户定义的 jms lisner 连接工厂名称@jmsListner

@JmsListener(destination = "Queue-name",containerFactory ="jmsListenerContainerFactory" )
    public void receiveMessage(@Payload final  Message consumerMessage) throws JMSException {
        LOGGER.info("Into receiveMessage Method");
}

但我仍然无法找到这对任何其他 activeMQ 是如何工作的。

于 2019-05-08T13:27:29.047 回答