Периодически приложение не может отправить сообщение в ActiceMQ Classic из-за исключения javax.jms.JMSException: не удалJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Периодически приложение не может отправить сообщение в ActiceMQ Classic из-за исключения javax.jms.JMSException: не удал

Сообщение Anonymous »

Приложение использует пул JMS-соединений. При запуске приложение работает нормально, но через пару дней не может отправлять сообщения в ActiveMQ "Classic". Как только приложение перезапускается, оно снова подключается и работает нормально в течение следующих нескольких дней.
Ниже приведено сообщение об ошибке:
Первоначальная ошибка:

Код: Выделить всё

2023-09-18 00:03:15,051 ERROR c.n.v.r.i.l.BulkMessageStorageQueueListener [pool-7-thread-1] Exception in sending messages, rollbacking messages with size: 78
org.springframework.jms.IllegalStateException: com.thoughtworks.xstream.InitializationException: Could not instantiate mapper : com.thoughtworks.xstream.mapper.EnumMapper; nested exception is javax.jms.IllegalStateException: com.thoughtworks.xstream.InitializationException: Could not instantiate mapper : com.thoughtworks.xstream.mapper.EnumMapper
at org.springframework.jms.support.JmsUtils.convertJmsAccessException(JmsUtils.java:274) ~[spring-jms-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.jms.support.JmsAccessor.convertJmsAccessException(JmsAccessor.java:185) ~[spring-jms-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:507) ~[spring-jms-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:584) ~[spring-jms-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.jms.core.JmsTemplate.convertAndSend(JmsTemplate.java:691) ~[spring-jms-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at com.project.xxx.BulkMessageSender.sendStatusMessage(BulkMessageSender.java:71) ~[classes/:04.17.02.35]
at com.project.xxx.BulkMessageStorageQueueListener.lambda$setupConsumer$0(BulkMessageStorageQueueListener.java:113) ~[classes/:04.17.02.35]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:?]
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) ~[?:1.8.0_222]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) ~[?:?]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:1.8.0_222]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:?]
at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_222]
Caused by: javax.jms.IllegalStateException: com.thoughtworks.xstream.InitializationException: Could not instantiate mapper : com.thoughtworks.xstream.mapper.EnumMapper
at org.apache.activemq.jms.pool.ConnectionPool.createSession(ConnectionPool.java:162) ~[activemq-jms-pool-5.15.12.jar:5.15.12]
at org.apache.activemq.jms.pool.PooledConnection.createSession(PooledConnection.java:167) ~[activemq-jms-pool-5.15.12.jar:5.15.12]
at org.springframework.jms.support.JmsAccessor.createSession(JmsAccessor.java:208) ~[spring-jms-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:495) ~[spring-jms-5.2.5.RELEASE.jar:5.2.5.RELEASE]
...  11 more
Caused by: com.thoughtworks.xstream.InitializationException: Could not instantiate mapper : com.thoughtworks.xstream.mapper.EnumMapper
at com.thoughtworks.xstream.XStream.buildMapperDynamically(XStream.java:646) ~[xstream-1.4.11.1.jar:1.4.11.1]
at com.thoughtworks.xstream.XStream.buildMapper(XStream.java:616) ~[xstream-1.4.11.1.jar:1.4.11.1]
at com.thoughtworks.xstream.XStream.(XStream.java:587) ~[xstream-1.4.11.1.jar:1.4.11.1]
at com.thoughtworks.xstream.XStream.(XStream.java:515) ~[xstream-1.4.11.1.jar:1.4.11.1]
at com.thoughtworks.xstream.XStream.(XStream.java:484) ~[xstream-1.4.11.1.jar:1.4.11.1]
at com.thoughtworks.xstream.XStream.(XStream.java:430) ~[xstream-1.4.11.1.jar:1.4.11.1]
at com.thoughtworks.xstream.XStream.(XStream.java:369) ~[xstream-1.4.11.1.jar:1.4.11.1]
at org.apache.activemq.transport.stomp.XStreamSupport.createXStream(XStreamSupport.java:31) ~[activemq-stomp-5.15.12.jar:5.15.12]
at org.apache.activemq.transport.xstream.XStreamWireFormat.createXStream(XStreamWireFormat.java:127) ~[activemq-http-5.15.12.jar:5.15.12]
at org.apache.activemq.transport.xstream.XStreamWireFormat.getXStream(XStreamWireFormat.java:113) ~[activemq-http-5.15.12.jar:5.15.12]
at org.apache.activemq.transport.xstream.XStreamWireFormat.marshalText(XStreamWireFormat.java:89) ~[activemq-http-5.15.12.jar:5.15.12]
at org.apache.activemq.transport.http.HttpClientTransport.oneway(HttpClientTransport.java:106) ~[activemq-http-5.15.12.jar:5.15.12]
at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68) ~[activemq-client-5.15.12.jar:5.15.12]
at org.apache.activemq.transport.ResponseCorrelator.asyncRequest(ResponseCorrelator.java:81) ~[activemq-client-5.15.12.jar:5.15.12]
at org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:86) ~[activemq-client-5.15.12.jar:5.15.12]
at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1392) ~[activemq-client-5.15.12.jar:5.15.12]
at org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1486) ~[activemq-client-5.15.12.jar:5.15.12]
at org.apache.activemq.ActiveMQConnection.createSession(ActiveMQConnection.java:329) ~[activemq-client-5.15.12.jar:5.15.12]
at org.apache.activemq.jms.pool.ConnectionPool.makeSession(ConnectionPool.java:112) ~[activemq-jms-pool-5.15.12.jar:5.15.12]
at org.apache.activemq.jms.pool.ConnectionPool$1.makeObject(ConnectionPool.java:82) ~[activemq-jms-pool-5.15.12.jar:5.15.12]
at org.apache.activemq.jms.pool.ConnectionPool$1.makeObject(ConnectionPool.java:78) ~[activemq-jms-pool-5.15.12.jar:5.15.12]
at org.apache.commons.pool2.impl.GenericKeyedObjectPool.create(GenericKeyedObjectPool.java:1041) ~[commons-pool2-2.7.0.jar:2.7.0]
at org.apache.commons.pool2.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:342) ~[commons-pool2-2.7.0.jar:2.7.0]
at org.apache.commons.pool2.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:265) ~[commons-pool2-2.7.0.jar:2.7.0]
at org.apache.activemq.jms.pool.ConnectionPool.createSession(ConnectionPool.java:144) ~[activemq-jms-pool-5.15.12.jar:5.15.12]
at org.apache.activemq.jms.pool.PooledConnection.createSession(PooledConnection.java:167) ~[activemq-jms-pool-5.15.12.jar:5.15.12]
at org.springframework.jms.support.JmsAccessor.createSession(JmsAccessor.java:208) ~[spring-jms-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:495) ~[spring-jms-5.2.5.RELEASE.jar:5.2.5.RELEASE]
...  11 more
Caused by: java.lang.ClassNotFoundException: com.thoughtworks.xstream.mapper.EnumMapper
at com.thoughtworks.xstream.core.util.CompositeClassLoader.loadClass(CompositeClassLoader.java:148) ~[xstream-1.4.11.1.jar:1.4.11.1]
at java.lang.Class.forName0(Native Method) ~[?:1.8.0_222]
at java.lang.Class.forName(Class.java:348) ~[?:1.8.0_222]
at com.thoughtworks.xstream.XStream.buildMapperDynamically(XStream.java:642) ~[xstream-1.4.11.1.jar:1.4.11.1]
at com.thoughtworks.xstream.XStream.buildMapper(XStream.java:616) ~[xstream-1.4.11.1.jar:1.4.11.1]
at com.thoughtworks.xstream.XStream.(XStream.java:587) ~[xstream-1.4.11.1.jar:1.4.11.1]
at com.thoughtworks.xstream.XStream.(XStream.java:515) ~[xstream-1.4.11.1.jar:1.4.11.1]
at com.thoughtworks.xstream.XStream.(XStream.java:484) ~[xstream-1.4.11.1.jar:1.4.11.1]
at com.thoughtworks.xstream.XStream.(XStream.java:430) ~[xstream-1.4.11.1.jar:1.4.11.1]
at com.thoughtworks.xstream.XStream.(XStream.java:369) ~[xstream-1.4.11.1.jar:1.4.11.1]
at org.apache.activemq.transport.stomp.XStreamSupport.createXStream(XStreamSupport.java:31) ~[activemq-stomp-5.15.12.jar:5.15.12]
at org.apache.activemq.transport.xstream.XStreamWireFormat.createXStream(XStreamWireFormat.java:127) ~[activemq-http-5.15.12.jar:5.15.12]
at org.apache.activemq.transport.xstream.XStreamWireFormat.getXStream(XStreamWireFormat.java:113) ~[activemq-http-5.15.12.jar:5.15.12]
at org.apache.activemq.transport.xstream.XStreamWireFormat.marshalText(XStreamWireFormat.java:89) ~[activemq-http-5.15.12.jar:5.15.12]
at org.apache.activemq.transport.http.HttpClientTransport.oneway(HttpClientTransport.java:106) ~[activemq-http-5.15.12.jar:5.15.12]
at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68) ~[activemq-client-5.15.12.jar:5.15.12]
at org.apache.activemq.transport.ResponseCorrelator.asyncRequest(ResponseCorrelator.java:81) ~[activemq-client-5.15.12.jar:5.15.12]
at org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:86) ~[activemq-client-5.15.12.jar:5.15.12]
at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1392) ~[activemq-client-5.15.12.jar:5.15.12]
at org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1486) ~[activemq-client-5.15.12.jar:5.15.12]
at org.apache.activemq.ActiveMQConnection.createSession(ActiveMQConnection.java:329) ~[activemq-client-5.15.12.jar:5.15.12]
at org.apache.activemq.jms.pool.ConnectionPool.makeSession(ConnectionPool.java:112) ~[activemq-jms-pool-5.15.12.jar:5.15.12]
at org.apache.activemq.jms.pool.ConnectionPool$1.makeObject(ConnectionPool.java:82) ~[activemq-jms-pool-5.15.12.jar:5.15.12]
at org.apache.activemq.jms.pool.ConnectionPool$1.makeObject(ConnectionPool.java:78) ~[activemq-jms-pool-5.15.12.jar:5.15.12]
at org.apache.commons.pool2.impl.GenericKeyedObjectPool.create(GenericKeyedObjectPool.java:1041) ~[commons-pool2-2.7.0.jar:2.7.0]
at org.apache.commons.pool2.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:342) ~[commons-pool2-2.7.0.jar:2.7.0]
at org.apache.commons.pool2.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:265) ~[commons-pool2-2.7.0.jar:2.7.0]
at org.apache.activemq.jms.pool.ConnectionPool.createSession(ConnectionPool.java:144) ~[activemq-jms-pool-5.15.12.jar:5.15.12]
at org.apache.activemq.jms.pool.PooledConnection.createSession(PooledConnection.java:167) ~[activemq-jms-pool-5.15.12.jar:5.15.12]
at org.springframework.jms.support.JmsAccessor.createSession(JmsAccessor.java:208) ~[spring-jms-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:495) ~[spring-jms-5.2.5.RELEASE.jar:5.2.5.RELEASE]
... 11 more
После того, как указанная ниже ошибка возникает постоянно, пока приложение не будет перезапущено.

Код: Выделить всё

2023-09-18 00:03:16,363 ERROR c.n.v.r.i.l.BulkMessageStorageQueueListener [pool-7-thread-1] Exception in sending messages, rollbacking messages with size: 94
org.springframework.jms.UncategorizedJmsException: Uncategorized exception occurred during JMS processing; nested exception is javax.jms.JMSException: Error while attempting to add new Connection to the pool; nested exception is javax.jms.JMSException: Could not connect to broker URL: https://hostName:443/destination-name?useInactivityMonitor=false. Reason: java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load [org/apache/http/client/version.properties].  The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
at org.springframework.jms.support.JmsUtils.convertJmsAccessException(JmsUtils.java:311) ~[spring-jms-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.jms.support.JmsAccessor.convertJmsAccessException(JmsAccessor.java:185) ~[spring-jms-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:507) ~[spring-jms-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:584) ~[spring-jms-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.jms.core.JmsTemplate.convertAndSend(JmsTemplate.java:691) ~[spring-jms-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at com.project.xxx.BulkMessageSender.sendStatusMessage(BulkMessageSender.java:71) ~[classes/:04.17.02.35]
at com.project.xxx.BulkMessageStorageQueueListener.lambda$setupConsumer$0(BulkMessageStorageQueueListener.java:113) ~[classes/:04.17.02.35]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:?]
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) ~[?:1.8.0_222]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) ~[?:?]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:1.8.0_222]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:?]
at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_222]
Caused by: javax.jms.JMSException: Error while attempting to add new Connection to the pool
at org.apache.activemq.jms.pool.PooledConnectionFactory.createJmsException(PooledConnectionFactory.java:279) ~[activemq-jms-pool-5.15.12.jar:5.15.12]
at org.apache.activemq.jms.pool.PooledConnectionFactory.createConnection(PooledConnectionFactory.java:230) ~[activemq-jms-pool-5.15.12.jar:5.15.12]
at org.apache.activemq.jms.pool.PooledConnectionFactory.createConnection(PooledConnectionFactory.java:209) ~[activemq-jms-pool-5.15.12.jar:5.15.12]
at org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:196) ~[spring-jms-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:494) ~[spring-jms-5.2.5.RELEASE.jar:5.2.5.RELEASE]
... 11 more
Caused by: javax.jms.JMSException: Could not connect to broker URL: https://hostName:443/destination-name?useInactivityMonitor=false. Reason: java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load [org/apache/http/client/version.properties].  The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:36) ~[activemq-client-5.15.12.jar:5.15.12]
at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:374) ~[activemq-client-5.15.12.jar:5.15.12]
at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:304) ~[activemq-client-5.15.12.jar:5.15.12]
at org.apache.activemq.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:244) ~[activemq-client-5.15.12.jar:5.15.12]
at org.apache.activemq.jms.pool.PooledConnectionFactory.createConnection(PooledConnectionFactory.java:288) ~[activemq-jms-pool-5.15.12.jar:5.15.12]
at org.apache.activemq.jms.pool.PooledConnectionFactory$1.makeObject(PooledConnectionFactory.java:97) ~[activemq-jms-pool-5.15.12.jar:5.15.12]
at org.apache.activemq.jms.pool.PooledConnectionFactory$1.makeObject(PooledConnectionFactory.java:94) ~[activemq-jms-pool-5.15.12.jar:5.15.12]
at org.apache.commons.pool2.impl.GenericKeyedObjectPool.create(GenericKeyedObjectPool.java:1041) ~[commons-pool2-2.7.0.jar:2.7.0]
at org.apache.commons.pool2.impl.GenericKeyedObjectPool.addObject(GenericKeyedObjectPool.java:1238) ~[commons-pool2-2.7.0.jar:2.7.0]
at org.apache.activemq.jms.pool.PooledConnectionFactory.createConnection(PooledConnectionFactory.java:226) ~[activemq-jms-pool-5.15.12.jar:5.15.12]
at org.apache.activemq.jms.pool.PooledConnectionFactory.createConnection(PooledConnectionFactory.java:209) ~[activemq-jms-pool-5.15.12.jar:5.15.12]
at org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:196) ~[spring-jms-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:494) ~[spring-jms-5.2.5.RELEASE.jar:5.2.5.RELEASE]
... 11 more
Caused by: java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load [org/apache/http/client/version.properties].  The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1427) ~[?:?]
at org.apache.catalina.loader.WebappClassLoaderBase.getResourceAsStream(WebappClassLoaderBase.java:1135) ~[?:?]
at org.apache.http.util.VersionInfo.loadVersionInfo(VersionInfo.java:233) ~[httpcore-4.4.13.jar:4.4.13]
at org.apache.http.util.VersionInfo.getUserAgent(VersionInfo.java:319) ~[httpcore-4.4.13.jar:4.4.13]
at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:1057) ~[httpclient-4.5.12.jar:4.5.12]
at org.apache.activemq.transport.http.HttpClientTransport.createHttpClient(HttpClientTransport.java:347) ~[activemq-http-5.15.12.jar:5.15.12]
at org.apache.activemq.transport.http.HttpClientTransport.getReceiveHttpClient(HttpClientTransport.java:233) ~[activemq-http-5.15.12.jar:5.15.12]
at org.apache.activemq.transport.http.HttpClientTransport.doStart(HttpClientTransport.java:250) ~[activemq-http-5.15.12.jar:5.15.12]
at org.apache.activemq.util.ServiceSupport.start(ServiceSupport.java:55) ~[activemq-client-5.15.12.jar:5.15.12]
at org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:64) ~[activemq-client-5.15.12.jar:5.15.12]
at org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:64) ~[activemq-client-5.15.12.jar:5.15.12]
at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:354) ~[activemq-client-5.15.12.jar:5.15.12]
at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:304) ~[activemq-client-5.15.12.jar:5.15.12]
at org.apache.activemq.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:244) ~[activemq-client-5.15.12.jar:5.15.12]
at org.apache.activemq.jms.pool.PooledConnectionFactory.createConnection(PooledConnectionFactory.java:288) ~[activemq-jms-pool-5.15.12.jar:5.15.12]
at org.apache.activemq.jms.pool.PooledConnectionFactory$1.makeObject(PooledConnectionFactory.java:97) ~[activemq-jms-pool-5.15.12.jar:5.15.12]
at org.apache.activemq.jms.pool.PooledConnectionFactory$1.makeObject(PooledConnectionFactory.java:94) ~[activemq-jms-pool-5.15.12.jar:5.15.12]
at org.apache.commons.pool2.impl.GenericKeyedObjectPool.create(GenericKeyedObjectPool.java:1041) ~[commons-pool2-2.7.0.jar:2.7.0]
at org.apache.commons.pool2.impl.GenericKeyedObjectPool.addObject(GenericKeyedObjectPool.java:1238) ~[commons-pool2-2.7.0.jar:2.7.0]
at org.apache.activemq.jms.pool.PooledConnectionFactory.createConnection(PooledConnectionFactory.java:226) ~[activemq-jms-pool-5.15.12.jar:5.15.12]
at org.apache.activemq.jms.pool.PooledConnectionFactory.createConnection(PooledConnectionFactory.java:209) ~[activemq-jms-pool-5.15.12.jar:5.15.12]
at org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:196) ~[spring-jms-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:494) ~[spring-jms-5.2.5.RELEASE.jar:5.2.5.RELEASE]
...  11 more
Ниже приведен код для настройки клиентского приложения:

Код: Выделить всё

public class ActiveMQConfig {

private static final Logger logger = LoggerFactory.getLogger(ActiveMQConfig.class);

// Active Mq properties

@Value("${activeMQ.broker.url}")
private String brokerUrl;

@Value("${jms.listener.concurrency}")
private String concurrency;

// The duration between attempts to redliver a message
@Value("${jms.rollback.redelivery.delay:10000}")
private int redeliveryDelay;

// Maximum number of times a redlivery of a message will be attempted -1 is infinite
@Value("${jms.rollback.maximum.redeliveries:-1}")
private String maximumRedelivery;

@Value("${message.activeMQ.pool.max.connections:10}")
private int activeMqPoolMaxConnections;

@Bean
public JmsListenerContainerFactory jmsListenerContainerFactory(
@Qualifier("jmsConnectionFactoryActiveMQ") ConnectionFactory connectionFactory,
DefaultJmsListenerContainerFactoryConfigurer configurer) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setConcurrency(concurrency);
factory.setSessionTransacted(true);
factory.setAutoStartup(false);
factory.setErrorHandler(errorHandler -> logger.error("An error has occurred in the transaction: {}",
errorHandler.getMessage()));
configurer.configure(factory, connectionFactory);
return factory;
}

@Bean
@Primary
public ActiveMQConnectionFactory jmsConnectionFactoryActiveMQ() {
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
connectionFactory.setTrustAllPackages(true);

// create re-delivery policy to configure re-attempt count and delay
// when message is rolled back on queue in case of any exception
RedeliveryPolicy redeliveryPolicy = new RedeliveryPolicy();
redeliveryPolicy.setMaximumRedeliveries(Integer.parseInt(maximumRedelivery));
redeliveryPolicy.setRedeliveryDelay(redeliveryDelay);

connectionFactory.setRedeliveryPolicy(redeliveryPolicy);
connectionFactory.setBrokerURL(brokerUrl);

return connectionFactory;
}

@Bean
public JmsTemplate jmsTemplateActiveMQ(PooledConnectionFactory pooledConnectionFactory) {
JmsTemplate jmsTemplate = new JmsTemplate();
jmsTemplate.setPubSubDomain(false);
jmsTemplate.setConnectionFactory(pooledConnectionFactory);
return jmsTemplate;
}

@Bean
public PooledConnectionFactory pooledConnectionFactory(ActiveMQConnectionFactory connectionFactory) {
PooledConnectionFactory pooledConnectionFactory = new PooledConnectionFactory();
pooledConnectionFactory.setConnectionFactory(connectionFactory);
pooledConnectionFactory.setMaxConnections(activeMqPoolMaxConnections);
return pooledConnectionFactory;

}

}
Примечание.
  • activeMqPoolMaxConnections имеет значение 10.
  • Входящие сообщения не слишком высокий. Это примерно 400-500 сообщений.
  • Мы также используем JMSXGroupID для группировки сообщений (

    Код: Выделить всё

    message.setStringProperty("JMSXGroupID", groupId);
    )
    URL-адрес подключения ActiveMQ — activeMQ.broker.url=https://dummy.dns.name.com/destination- ... itor=false< /li>


Подробнее здесь: https://stackoverflow.com/questions/771 ... ssic-due-t
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»