У меня проблема с управляемым сообщениями EJB.У меня также есть веб-служба приложений и EJB-приложение, которое содержит MessageDrivenBean.
Для отправки сообщения в JMS я использую ObjectMessage: Вот мой код:
Connection connection = connectionFactory.createConnection();
Session session = connection.createSession(false, 1);
MessageProducer messageProducer = session.createProducer(queue);
ObjectMessage outMessage = session.createObjectMessage();
outMessage.setObject(((Serializable) operation));
LOGGER.debug("Sending message...");
messageProducer.send(outMessage);
LOGGER.debug("Sending message: done.");
messageProducer.close();
session.close();
connection.close();
Когда я вызываю свой веб-сервисЯ также называю этот метод.Сообщение поступает в MDB и начинает обрабатываться.Вот мой код MDB:
@MessageDriven(mappedName = "jms/cbsDestination", activationConfig = {
@ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")
})
public class OperationsBackgroundService implements MessageListener {
//Some code....
public void onMessage(Message message) {
LOGGER.debug("Got message: " + message.toString());
if (message instanceof ObjectMessage) {
ObjectMessage objectMessage = (ObjectMessage) message;
Operation operation = null;
}
Все нормально, я получаю сообщение, оно начинает обрабатываться и заканчивается, как я ожидаю.
Но проблема в том, что: когда я отправляю первое сообщение в MDB, он начинает его обрабатывать (ОК), затем, когда первое сообщение обрабатывается, я отправляю второе сообщение в свой MDB, и он также начинает его обрабатывать.Я знаю, что для JMS характерно то, что, если я отправляю одно сообщение и оно обрабатывает, другие сообщения ждут, пока первое не будет обработано.Или я что-то здесь упускаю?Пожалуйста помоги.Может быть, есть некоторые свойства, которые я забыл установить?
Заранее спасибо ID.