240.9. request/reply를 사용하여 단일 연결을 통해 동시 메시지 멀티플렉싱
netty 생산자를 통해 요청/응답 메시징에 Netty를 사용하는 경우 기본적으로 각 메시지는 비공유 연결(풀링)을 통해 전송됩니다. 이렇게 하면 Camel의 추가 라우팅을 위해 응답이 자동으로 올바른 요청 스레드에 매핑할 수 있습니다. 즉, 요청/응답 메시지 간의 상관관계는 요청을 보내는 데 사용된 동일한 연결에서 응답이 반환되므로 기본적으로 수행됩니다. 그리고 이 연결은 다른 사용자와 공유되지 않습니다. 응답이 다시 오면 연결이 다시 연결 풀로 반환되며 다른 사용자가 재사용할 수 있습니다.
그러나 단일 공유 연결에서 동시 요청/응답을 멀티플렉트하려면 producerPoolEnabled=false
를 설정하여 연결 풀링을 해제해야 합니다. 이제 응답이 주문되지 않은 경우 교차 응답과 관련하여 잠재적인 문제가 있음을 의미합니다. 따라서 요청 및 응답 메시지에 상관 관계 ID가 있어야 Camel 콜백을 계속 처리하는 Camel 콜백에 대한 응답을 적절하게 연결할 수 있습니다. 이를 위해서는 NettyCamelStateCorrelationManager
를 상관 관계 관리자로 구현하고 correlationManager=#myManager
옵션을 통해 구성해야 합니다.
사용자 지정 상관 관계 관리자를 빌드할 때 TimeoutCorrelationManagerSupport
를 확장하는 것이 좋습니다. 이렇게 하면 시간 초과 및 기타 복잡성도 지원됩니다.