Я запускаю потребителя и производителя, но MDB не получает сообщение.
Я использовал подобный код в другом приложении, и он работает.с этим приложением mdb никогда не вызывается, и я не понимаю, если это проблема конфигурации (я не знаю, что изменить) или код.
MDB:
public class changeRistMDB implements MessageListener {
@Override
public void onMessage(Message message) {
try {
RistDTO order = message.getBody(RistDTO.class);
System.out.println("Expensive order receivede: " + order);
} catch (JMSException e) {
e.printStackTrace();
}
}
}
ПОТРЕБИТЕЛЬ:
public class ChangeConsumer {
public static void main (String [] args ) throws NamingException {
Context jndiContext = new InitialContext();
ConnectionFactory connectionFactory = (ConnectionFactory) jndiContext.lookup("jms/javaee7/ConnectionFactoryRist");
Destination topic = (Destination) jndiContext.lookup("jms/javaee7/TopicRist");
System.out.println("\n Infinite loop. Waiting...");
try (JMSContext jmsContext = connectionFactory.createContext()) {
while(true) {
RistDTO order = jmsContext.createConsumer(topic).receiveBody(RistDTO.class);
System.out.println("Order received: " + order);
}
}
}
}
ПРОИЗВОДИТЕЛЬ:
public class ChangeProducer {
public static void main (String [] args ) throws NamingException {
RistDTO order = new RistDTO("1",-200);
Context jndiContext = new InitialContext();
ConnectionFactory connectionFactory = (ConnectionFactory)jndiContext.lookup("jms/javaee7/ConnectionFactoryRist");
Destination topic = (Destination) jndiContext.lookup("jms/javaee7/TopicRist");
try ( JMSContext jmsContext = connectionFactory.createContext()) {
jmsContext.createProducer().send(topic, order);
}
}
}
Производитель и потребитель работают, но MDB не получает.