Название может сбивать с толку, но это то, чего я хочу добиться. Я хочу отправить сообщение jms с 1 ejb на другой, у 2-го ejb есть прослушиватель сообщений, и теперь он работает правильно. Но я хотел, чтобы 1-й ejb создал временную очередь назначения, в которой будет отвечать 2-й ejb — это тоже работает правильно.
Моя проблема во втором ejb, он вызывает стороннюю веб-службу, которая в некоторых случаях будет отвечать через долгое время, и временная очередь должна истечь в это время. Но проблема в том, что это не соответствует java.net: http://java.net/projects/mq/lists/users/archive/2011-07/message/22
The message hasn't been delivered to a client and it expires -- in this case, the message is deleted when TTL is up.
The message is delivered to the JMS client (it's in-flight). Once this happens, since control is handed to the jms client, the broker cannot expire the message.
Finally, the jms client will check TTL just before it gives the message to the user application. If it's expired, we will not give it to the application and it will send a control message back to the broker indicating that the message was expired and not delivered.
Итак, письмо получено, но ответа пока нет. Затем в то время, когда он будет писать во временную очередь, срок его действия уже должен быть истек, но по какой-то причине я все еще мог писать в очередь, и у меня есть ff в моем журнале imq:
1 messages not expired from destination jmsXXXQueue [Queue] because they have been delivered to client at time of the last expiration reaping
Есть ли другая реализация, в которой я могу определить, истек ли срок действия временной очереди? Чтобы я мог выполнить еще один набор действий? Потому что моя проблема сейчас в том, что ejb2 поздно отвечает, и больше нет jms-ридера от ejb1, потому что он уже ушел.