использовать jms queue.jms message non persistent redelivery after stop-start appServer
EJB Отправитель:
@Resource(lookup = "jms/csPdvQueue")
private Queue csPdvQueue;
@Inject
private JMSContext jmsContext;
способ отправить сообщение:
public void asynchWatched(Pdv pdv, boolean pending) {
jmsContext.createProducer().setDeliveryMode(DeliveryMode.NON_PERSISTENT);
jmsContext.createProducer().send(csPdvQueue, pdv);
}
EJB потребитель:
@MessageDriven(mappedName = "jms/csPdvQueue")
public class PdvProcessorMdb implements MessageListener {
@Override
public void onMessage(Message message) {
... execute some businesslogic...
}
}
если сервер приложений (скумбриевидный гидролик) завершает работу во время сообщения потребляя (OnMessage), то транзакция корректно откат.
Когда сервер приложений запускается снова, сообщение повторно добавляется, даже если я установил DeliveryMode.NON_PERSISTENT.
Я хочу избежать сообщения о возврате товара.
Возможно ли (и как)?
«при запуске приложения. Такое же сообщение получает от потребителя, но отправитель ничего не отправляет». - Не могли бы вы лучше объяснить? Как вы можете получить от потребителя - потребитель не отправляет сообщение, а получает его. Получает ли оно одно и то же сообщение после перезапуска или нет? – OndrejM