КонфигурацияJMS - Redelivery поток в очереди
I'm с помощью EJB 3 в OC4J 10.1.3.x
Проблема
создать производителя очереди с ориентацией CLIENT_ACKNOWLEDGE , например:
queueConnection = queueConnectionFactory.createQueueConnection();
queueSession = queueConnection.createQueueSession(false,
Session.CLIENT_ACKNOWLEDGE);
queueSender = queueSession.createSender(queue);
ObjectMessage objMessage = queueSession.createObjectMessage();
Mail data = new Mail();
data.setMessage("Some random message.");
objMessage.setObject(data);
queueSender.send(objMessage);
Что я понимаю, так это то, что потребительский душ d обрабатывать ack сообщения, другими словами, если потребитель НЕ ЗНАЕТ, вызовите метод message.acknowledge()
, поэтому сообщение должно быть отправлено повторно. Это правильно?
Что происходит, когда мой MDB просто прочитал сообщение (слушателем onMessage
), что сообщение просто выходит из очереди (независимо, если я вызываю или не метод message.acknowledge()
).
public void onMessage(Message message) {
try {
if (message instanceof ObjectMessage) {
ObjectMessage objectMessage = (ObjectMessage) message;
Mail mail = (Mail) objectMessage.getObject();
System.out.println(mail.getMessage());
throw new RuntimeException("Error");
}
} catch (JMSException e) {
}
Что я делаю неправильно?