Следующий код пытается отправить сообщение в очередь с помощью JMS.
connection = jmsConnectionFactory.createConnection();
connection.start();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue(queueName);
MessageProducer producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
Это работает большую часть времени, но при выполнении стресс-тестов, когда много сообщений отправлялось параллельно, я обнаружил, чтоисключение ниже:
Caused by: javax.jms.IllegalStateException: The producer is closed
at org.apache.activemq.ActiveMQMessageProducer.checkClosed(ActiveMQMessageProducer.java:195)
at org.apache.activemq.ActiveMQMessageProducerSupport.setDeliveryMode(ActiveMQMessageProducerSupport.java:136)
Исключение выдается в setDeliveryMode()
.Я видел другие сообщения об этой проблеме, но в моем случае я не использую общие сеансы или общие подключения.
Я использую ActiveMQ 5.14.5.