Я пытаюсь повторно обработать сообщения из очереди недоставленных писем/сообщений (DLQ).
В приведенном ниже методе я получаю значение null, когда выполняю dlqConsumer.receive(5000) на Пайаре 5.2022.5. Там, где я использовал QueueBrowser, сообщения отображаются нормально. Что не выполняет цикл while?
public void resubmitMessages(int toResubmit) throws Exception {
log.debug("DLQService: resubmitMessages()");
InitialContext ctx = null;
QueueConnectionFactory connectionFactory;
QueueConnection queueConn = null;
try {
ctx = new InitialContext();
connectionFactory = (QueueConnectionFactory) ctx.lookup("jms/ConnectionFactory");
queueConn = connectionFactory.createQueueConnection();
QueueSession queueSession = queueConn.createQueueSession(true, QueueSession.AUTO_ACKNOWLEDGE);
assert queueSession.getTransacted();
Queue clsQueue = (Queue) ctx.lookup(CLS_NAME);
QueueSender sender = queueSession.createSender(clsQueue);
Queue dlq = (Queue) ctx.lookup("queue/mq.sys.dmq");
MessageConsumer dlqConsumer = queueSession.createConsumer(dlq);
int i = 0;
Message message;
while ((message = dlqConsumer.receive(5000)) != null && i < toResubmit) {
try {
log.debug("Processing: " + ((ObjectMessage) message).getObject());
sender.send(message);
queueSession.commit();
log.debug("resubmitted successfully to main queue from dlq");
} catch (JMSException jmse) {
log.error("Exception caught while resubmitting message to main queue", jmse);
queueSession.rollback();
throw jmse;
}
i++;
}
} catch (Exception e) {
log.error("Exception caught while sending message", e);
throw e;
} finally {
cleanUp(ctx, queueConn);
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... a-5-2022-5
Невозможно получить существующее сообщение JMS из DLQ на Payara 5.2022.5. ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Невозможно получить существующее сообщение JMS из DLQ на Payara 5.2022.5.
Anonymous » » в форуме JAVA - 0 Ответы
- 9 Просмотры
-
Последнее сообщение Anonymous
-