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