0

スプリング ブートを使用して 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 キューに再接続する方法

親切に助けて

4

1 に答える 1