スプリング ブートを使用して solace キューに接続しています。以下のチュートリアルを使用して、solace JMS キューに接続しました。 https://www.devglan.com/spring-boot/spring-jms-solace-example solace キューに接続できます。アプリケーションが開始され、solace キューとの接続が正常に機能しているときに 1 つの問題に直面しましたが、しばらくして solace キューがダウンした後、アプリケーションを再起動して接続するのではなく、Spring Boot アプリケーションが solace キューに再接続する必要があります。追加した solace キューに再接続するには
connectionFactory.setReconnectRetries(-1);
connectionFactory.setReconnectRetryWaitInMillis(3000);
connectionFactory.setConnectRetries(-1);
connectionFactory.setConnectRetriesPerHost(5);
コードは以下のようになります
@Bean
public SolConnectionFactory solConnectionFactory() throws Exception {
SolConnectionFactory connectionFactory = SolJmsUtility.createConnectionFactory();
connectionFactory.setHost(environment.getProperty("solace.java.host"));
connectionFactory.setVPN(environment.getProperty("solace.java.msgVpn"));
connectionFactory.setUsername(environment.getProperty("solace.java.clientUsername"));
connectionFactory.setPassword(environment.getProperty("solace.java.clientPassword"));
connectionFactory.setClientID(environment.getProperty("solace.java.clientName"));
connectionFactory.setReconnectRetries(-1);
connectionFactory.setReconnectRetryWaitInMillis(3000);
connectionFactory.setConnectRetries(-1);
connectionFactory.setConnectRetriesPerHost(5);
return connectionFactory;
}
@Bean
public JmsMessageListener jmsMessageListener() {
return new JmsMessageListener();
}
@Bean(destroyMethod = "close")
public Connection connection() {
Connection connection = null;
javax.jms.Session session;
try {
connection = solConnectionFactory().createConnection();
session = connection.createSession(false, javax.jms.Session.AUTO_ACKNOWLEDGE);
Queue queue = session.createQueue(environment.getProperty("solace.message.consumer.queue"));
MessageConsumer messageConsumer = session.createConsumer(queue);
messageConsumer.setMessageListener(jmsMessageListener());
connection.setExceptionListener(exceptionListener);
connection.start();
logger.info("Connected. Awaiting message...");
} catch (Exception e) {
logger.info("JMS connection failed with Solace." + e.getMessage());
e.printStackTrace();
}
return connection;
}
pom.xml
<dependency>
<groupId>com.solacesystems</groupId>
<artifactId>sol-jms</artifactId>
<version>10.4.0</version>
</dependency>
<dependency>
<groupId>com.solacesystems</groupId>
<artifactId>sol-jcsmp</artifactId>
<version>10.4.0</version>
</dependency>
ここでは、solace キュー接続が中断された場合、例外リスナーには入りません。また、再接続プロパティを追加することにより、アプリケーションが solace キューに再接続しているかどうかがログに表示されません。しばらくして solace キューが起動した場合に solace キューに再接続する方法
親切に助けて