참조에 의해 메시지 페이로드 전달: 각 처리 단계에 대한 잠재적 이점

JMS 메시징 애플리케이션이 수행하는 각 처리 단계에서, 이 테이블을 확인하여 연관된 연결 팩토리 또는 활성 스펙에서 "참조에 의해 메시지 페이로드 전달" 특성을 사용하면 잠재적으로 성능면의 이점이 생기는 이유 및 시기를 알아볼 수 있습니다.

대용량 오브젝트 메시지 또는 바이트 메시지가 전송되면, 메시지 페이로드를 직렬화, 직렬화 해제 및 복사하는 데 사용하는 메모리 및 프로세서의 비용이 커질 수 있습니다. 연결 팩토리 또는 활성화 스펙에서 참조에 의한 메시지 페이로드 전달 특성을 사용하면, 기본 메시징 제공자가 JMS 1.1 스펙을 대체하고 이 데이터의 복사를 줄이거나 생략하도록 합니다.

경고:
이러한 특성에 의해 생략된 JMS 스펙의 파트는 메시징 데이터의 무결성을 보장하도록 정의됩니다. 이러한 특성을 사용하는 모든 JMS 애플리케이션은 참조에 의해 JMS 메시지 페이로드를 전달하는 이유 및 시기 주제에 설명된 규칙을 엄격히 따라야 합니다. 그렇지 않으면, 데이터 무결성을 잃게 됩니다.
참조에 의해 메시지 페이로드를 전달하려면 특성을 연결 팩토리 및 활성화 스펙을 설정하십시오.
producerDoesNotModifyPayloadAfterSet(연결 팩토리의 경우) 또는 forwarderDoesNotModifyPayloadAfterSet(활성화 스펙의 경우)
이 특성이 사용 가능하면 연결 팩토리에 의해 생성되거나 활성화 스펙을 통해 전달된 오브젝트 또는 바이트 메시지는 메시지로 설정된 경우 복사되지 않으며 꼭 필요한 경우에만 직렬화됩니다. 이와 같은 메시지를 전송하는 애플리케이션에서는 데이터가 메시지로 설정된 후 이를 수정해서는 안 됩니다.
consumerDoesNotModifyPayloadAfterGet
이 특성이 사용 가능하면 연결 팩토리 또는 활성화 스펙을 통해 수신된 오브젝트 메시지가 꼭 필요한 경우에만 직렬화됩니다. 해당 메시지에서 얻어진 데이터는 애플리케이션에서 수정하지 않아야 합니다.
표 1. 생성자, 이용자 또는 전달자 애플리케이션에서 수행하는 각 처리 단계의 잠재적 성능 이점. 표의 첫 번째 열은 오브젝트 및 바이트 메시지의 처리 단계를 나열합니다. 두 번째 열은 성능 개선 가능성이 있는지 여부를 나타냅니다. 세 번째 열은 프로세스 및 특성에 대한 간단한 설명을 제공합니다.
처리 단계 성능 향상의 잠재성 여부 설명
생성자 및 이용자 애플리케이션의 오브젝트 메시지    
오브젝트 메시지는 동일한 JVM의 이용자 애플리케이션으로 전송됩니다. producerDoesNotModifyPayloadAfterSet 및 consumerDoesNotModifyPayloadAfterGet 특성 모두 사용 가능합니다. 특정 조건에서 페이로드 오브젝트가 참조에 의해 이용자 애플리케이션으로 전달됩니다.

메시지가 지속적이 아니거나 처리되지 않고 이용자 애플리케이션을 즉시 사용할 수 있는 경우, 페이로드 오브젝트가 직렬화되지 않을 수 있습니다.

오브젝트 메시지는 사용 가능한 producerDoesNotModifyPayloadAfterSet 특성으로 생성된 후 사용 불가능한 consumerDoesNotModifyPayloadAfterGet 특성의 이용자 애플리케이션에 의해 수신됩니다. 아니오 이용자 애플리케이션에는 사용 가능한 consumerDoesNotModifyPayloadAfterGet 특성이 없기 때문에 얻을 수 있는 이점이 없습니다.
오브젝트 메시지는 다른 JVM의 단일 이용자 애플리케이션으로 전송됩니다. producerDoesNotModifyPayloadAfterSet 및 consumerDoesNotModifyPayloadAfterGet 특성 모두 사용 가능합니다. 아니오 단일 이용자 애플리케이션이 또 다른 JVM에 있기 때문에 얻을 수 있는 이점이 없습니다.
오브젝트 메시지는 사용 가능한 consumerDoesNotModifyPayloadAfterGet 특성을 가지고 있으며 동일한 JVM에서 실행 중인 다중 이용자 애플리케이션(토픽)에 의해 수신됩니다. 사용 가능한 consumerDoesNotModifyPayloadAfterGet 특성이 있는 모든 이용자 애플리케이션은 동일한 오브젝트에 대한 참조를 수신하지만 반드시 그렇지는 않습니다.
전달자 애플리케이션의 오브젝트 메시지    
오브젝트 메시지가 전달되고 전달자 애플리케이션은 메시지의 페이로드에 액세스합니다. consumerDoesNotModifyPayloadAfterGet 및 producer/forwarderDoesNotModifyPayloadAfterSet 특성이 사용 가능합니다. 다음과 같은 경우 잠재적으로 성능에 대한 이점이 있습니다.
  • 전달된 메시지의 생성자는 사용 가능한 producerDoesNotModifyPayloadAfterSet 특성을 갖고 있으며 전달자 애플리케이션과 동일한 JVM에 있습니다.
  • 전달된 메시지의 이용자는 사용 가능한 consumerDoesNotModifyPayloadAfterGet 특성을 갖고 있으며 전달자 애플리케이션과 동일한 JVM에 있습니다.
오브젝트 메시지가 전달되고 전달자 애플리케이션은 메시지의 페이로드에 액세스합니다. producer/forwarderDoesNotModifyPayloadAfterSet 특성만 사용 가능합니다. 전달된 메시지의 이용자가 사용 가능한 consumerDoesNotModifyPayloadAfterGet 특성을 갖고 있으며 전달자 애플리케이션과 동일한 JVM에 있는 경우, 잠재적으로 성능에 대한 이점이 있습니다.
오브젝트 메시지가 전달되고 전달자 애플리케이션은 메시지의 페이로드에 액세스하지 않습니다. 아니오 전달자 애플리케이션이 오브젝트 메시지의 페이로드에 액세스하지 않는 경우, producer/forwarderDoesNotModifyPayloadAfterSet 및 consumerDoesNotModifyPayloadAfterGet 특성이 전달자 애플리케이션에 영향을 미치지 않습니다. 원래 생성자 애플리케이션 및 최종 이용자 애플리케이션에서 얻어진 이점은 유지됩니다.
중개에 대한 오브젝트 메시지    
오브젝트 메시지는 중개된 서비스 통합 버스 대상으로 전송됩니다. 아니오 오브젝트 메시지가 중개된 대상으로 전송되는 경우 producerDoesNotModifyPayloadAfterSet 특성을 사용하여 얻어지는 성능의 이점은 없습니다.
이용자 애플리케이션의 바이트 메시지    
바이트 메시지는 임의의 이용자 애플리케이션으로 전송됩니다. producerDoesNotModifyPayloadAfterSet 특성이 사용 가능합니다. 바이트 데이터의 사본이 저장되어, 메시지로 설정되는 데이터를 복사하도록 지정하는 JMS 스펙의 파트가 생략됩니다.
바이트 메시지는 사용 가능한 consumerDoesNotModifyPayloadAfterGet 특성으로 수신됩니다. 아니오 JMS API를 사용하면 바이트 데이터가 이용자 코드(BytesMessage.readBytes methods)로 돌아가는 참조에 의해 전달될 수 없습니다.
바이트 메시지는 사용 가능한 consumerDoesNotModifyPayloadAfterGet 특성을 가지고 있는 다중 이용자(토픽)에 의해 수신됩니다. 아니오 JMS API를 사용하면 바이트 데이터가 이용자 코드(BytesMessage.readBytes methods)로 돌아가는 참조에 의해 전달될 수 없습니다.
전달자 애플리케이션의 바이트 메시지    
바이트 메시지가 전달됩니다. 아니오 "참조에 의한 메시지 페이로드 전달" 특성을 사용하여 얻어지는 이점이 없습니다.

주제 유형을 표시하는 아이콘 개념 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cjn_passbyref_steps
파일 이름:cjn_passbyref_steps.html