은 다음과 같이이다 :
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
connection = connectionFactory.createConnection();
지금, 그것은 연결을 닫지 않을 경우 JMS 클라이언트 (생산자/소비자) 일단 완료 해당 JMS 클라이언트는 여전히 MQ 브로커와 연결되어 있으며 MQ 브로커와의 연결을 점유합니다. 이제는 JMS 클라이언트 코드가 "잘못되었을 수 있습니다"라는 것과 연결을 닫지 않는 것처럼 보이므로 JMS 클라이언트 코드를 확인하고 아래 에서처럼 연결을 닫아야합니다.
if (connection != null) {
connection.close();
}
이제, 다음 JMS 클라이언트에서 메시지 리스너가있는 경우가 이러한 연결은 다음 최대 활동을 지정할 수 있습니다 잠시 후 완전히 비활성화하면 연결이 열린 상태를 유지하지만, 경우 것으로 예상하고 있다고 말했다 데 당신이 다음 자세한 내용은이 cf = new ActiveMQConnectionFactory( "tcp://localhost:61616?wireFormat=openwire&wireFormat.maxInactivityDuration=<<whatever_value_you_want>>");
읽기 this ActiveMQ를 문서처럼 작성해야 MQ 브로커와의 연결을 만들 때 이에 대한 wireFormat.maxInactivityDuration
를 사용하여 연결 지속 시간. FYI로서
- ActiveMQ를 브로커에 연결의 최대 숫자는 이렇게 그냥 그 내부는 아래와 같이 최대 연결 (?maximumConnections=1000
)에 정의 transportConnectors
요소가, 구성 파일 activemq.xml
을 사용하여 정의되고 적절한 시스템 리소스가 있고 더 많은 클라이언트 연결을 확보 할 수있는 능력이 있다면 늘릴 수 있습니다. <transportConnectors>
<!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
</transportConnectors>
안녕하세요 @ 재생 목록을 보내 주셔서 감사합니다. 모든 코드가 연결을 확인했습니다. connection.close(); , case1 : 실제로는 사용자가 웹에서 로그인 할 때 tcp 연결을 통해 주제에 가입하면 사용자가 로그 아웃하거나 세션이 만료 될 때와 같이 닫히지 않습니다. – user4045063
사례 2 : 대기열에 메시지를 배치 할 때 최종 사용자 인터넷 연결이 방해 받고 MQ가 요청 된 사용 사실을 보류 할 수 없으므로 연결이 유지됩니다. activemq.xml에서 모든 시간대의 연결이 끊어진 후에 연결을 변경할 수 있습니다. – user4045063
귀하의 경우 1 : 언급 한 바와 같이 명확하게 문제는 사용자가 로그 아웃하거나 세션이 만료되면 연결을 종료해야한다는 것입니다. 사례 2의 경우 : 최대 비활성 기간을 지정할 수 있다고 말했듯이 비슷한 방식으로 시간 초과 매개 변수를 사용할 수 있습니다 (http://activemq.apache.org/tcp-transport-reference.html). 귀하의 사례를 살펴보면 느린 소비자를 구성해야한다고 생각합니다. 여기를 읽으십시오 - https://planet.jboss.org/post/coming_in_activemq_5_9_a_new_way_to_abort_slow_consumers – hagrawal