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




Я забываю упомянуть мое пользовательское имя фабрики соединений jms lisner в аннотации @jmsListner.
@JmsListener(destination = "Queue-name",containerFactory = "jmsListenerContainerFactory" )
public void receiveMessage(@Payload final Message consumerMessage) throws JMSException {
LOGGER.info("Into receiveMessage Method");
}
Но я все еще не могу найти, как это работает для любого другого ActiveMQ.