0

나는 Azure 큐에 연결하고 메시지를 소비하는 응용 프로그램을 만들었습니다. 문제는 240000 밀리 초 후에 자동으로 연결이 닫히고 예외가 발생합니다 "org.apache.qpid.amqp_1_0.jms.MessageConsumerException: The connection was inactive for more than the allowed 240000 milliseconds and is closed by container. PFB Azure 대기열에 연결하는 구성 코드입니다. Azure 봄 부팅 연결 시간 초과 예외

@Bean 
public ConnectionFactory jmsConnectionFactory() { 
    CachingConnectionFactory cachingConnectionFactory = null; 
    try { 
     cachingConnectionFactory = new CachingConnectionFactory(ConnectionFactoryImpl.createFromURL(url)); 
     cachingConnectionFactory.setReconnectOnException(true); 
     cachingConnectionFactory.setClientId(applicationName); 
    } catch (MalformedURLException e) { 
     logger.error("Exception", e); 
    } 
    return cachingConnectionFactory; 
} 

@Bean 
public MessageListenerContainer getContainer() { 
    DefaultMessageListenerContainer container = new DefaultMessageListenerContainer(); 
    container.setConnectionFactory(jmsConnectionFactory()); 
    container.setDestinationName(queueName); 
    container.setMessageListener(messageConsumer); 
    container.setConcurrency(concurrency); 
    return container; 
} 

내 pom.xml 파일

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.4.4.RELEASE</version> 
    <relativePath /> <!-- lookup parent from repository --> 
</parent> 
<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
    <java.version>1.8</java.version> 
</properties> 
<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-cassandra</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-jms</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-lang3</artifactId> 
     <version>3.5</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-actuator</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.geronimo.specs</groupId> 
     <artifactId>geronimo-jms_1.1_spec</artifactId> 
     <version>1.1.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.qpid</groupId> 
     <artifactId>qpid-amqp-1-0-client</artifactId> 
     <version>0.30</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.qpid</groupId> 
     <artifactId>qpid-amqp-1-0-client-jms</artifactId> 
     <version>0.30</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.qpid</groupId> 
     <artifactId>qpid-amqp-1-0-common</artifactId> 
     <version>0.30</version> 
    </dependency> 
</dependencies> 

내 URL은 다음과 같습니다 amqps://user:<password>@myqueue2.servicebus.windows.net

내 질문은 활성 연결을 유지하는 방법 또는 예외 후 큐에 다시 연결하는 방법입니다. 감사합니다.

답변

0

Qpid 공식 문서에 따르면 Failover Configuration options에 대해 페일 오버 용 URI를 사용하여 연결이 끊어졌을 때 자동으로 다시 연결되도록 Qpid의 장애 조치 기능을 사용하십시오.