2013-01-10 1 views
0

activemq PooledConnectionFactory를 사용하여 연결을 만들고 있습니다. 나는 스레드를 만들고 각 스레드는 자체 연결, 세션 및 생산자를 갖게됩니다. 두 개의 쿼리가 있습니다. 1. 코드에서 연결, 세션, 제작자를 직접 닫아야합니까, 아니면 생성자가 메시지를 성공적으로 전송했는지 pooledConnectionFactory에서 처리해야합니까? 2. 모든 스레드 (결국 각 메시지)에 대한 연결을 만드는 것은 성능 병목 현상이됩니다. 그 안에 많은 세션과 하나의 연결을 가질 수 있습니까 (또는 세션과 연결 사이에 일대일 매핑이 있어야합니다).pooledconnectionfactory를 사용하는 경우 activemq 연결을 닫아야합니까

어떤 도움을 주시면 감사하겠습니다.

답변

1

다른 JMS 연결, 세션 및 프로듀서처럼 코드를 사용해야합니다. 쓰레드가 완료되면이를 발견하는 마법은 없습니다. 닫을 필요가 있습니다. 그러면 풀에 반환됩니다. 하나의 Connection 만 사용하고 그로부터 많은 세션을 가져올 수 있지만 필요에 따라 다른 사람에게 넘겨주기 위해 풀로 돌아갈 수 있도록 Connection을 닫아야합니다.

+0

하지만 세션 및 연결을 닫으면 해당 연결이 이미 닫혔다 고 불평 중입니다. 메시지를 보내는 내 코드는 하나 이상의 스레드 (각각 하나의 메시지 처리)에서 실행되는 실행 방법입니다. 각 스레드마다 연결 및 세션의 고유 한 인스턴스가 있다고 생각합니다. 그러면이 코드를 실행하는 다른 스레드가 닫힌 연결에 대해 불만을 나타낼 수 있습니다. , 만약 내가 코드의 끝에 연결을 닫습니다. – Manglesh

관련 문제