Потребитель Amazon MQ не может получить данные - PullRequest
0 голосов
/ 01 мая 2019

Я создал простого потребителя для 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

1 Ответ

0 голосов
/ 08 мая 2019

Не забудьте упомянуть мое пользовательское имя фабрики соединений jms lisner в @jmsListner аннотации.

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

Но я все еще не могу найти, как это работает для любого другого activeMQ.

...