공개의 메시지 컨텐츠 필터링
등록한 토픽에서 모든 메시지를 수신하는 대신 이용 애플리케이션은 XML 경로(XPath) 선택기를 사용하여 각 메시지의 컨텐츠를 기반으로 메시지를 필터링할 수 있습니다. . 이 컨텐츠 기반 등록은 수신하려는 정보 유형 정의에 대해 더 큰 융통성을 제공하고 애플리케이션은 자체 필터링을 처리할 필요가 없습니다. 성능은 관련되지 않은 메시지가 서버에서 애플리케이션으로 불필요하게 전송되지 않기 때문에 향상됩니다.
이 태스크 정보
WS-Notification 공개 및 등록 메시징 모델은 토픽을 기반으로 합니다. 각 공개는 고정된 토픽 세트 중 하나에 속하는 것으로 분류됩니다. 공개자는 각 공개에 토픽 이름 레이블을 표시하고 이용자는 특정 토픽의 모든 공개에 등록합니다. 예를 들어, 주식 거래 알림 시스템은 다음과 같이 각 공개에 대한 토픽을 정의할 수도 있습니다. 공개자가 적절한 문제에 대한 레이블이 토픽 이름으로 표시되는 정보를 게시하고 등록자는 일부 문제에 대한 정보에 등록합니다.
- 문제 이름
- 가격
- 주식 규모
(issue="IBM") and (price<120) and (volume>1000)
XPath(XML Path) 언어, 버전 1.0을 사용하여 등록 애플리케이션에서 XPath 1.0 메시지 컨텐츠 필터를 코딩합니다.
XPath 선택기를 사용하여 공개 메시지 컨텐츠를 필터링하려면 다음 단계를 완료하십시오.
프로시저
- WS-Notification 이용자를 등록하는 새 애플리케이션을 작성하십시오.
- 등록 애플리케이션에서 XPath 메시지 컨텐츠 필터를 코딩하십시오. 이 작업 수행을 위한 코드 예는 예: WS-Notification 이용자 등록의 내용을 참조하십시오. 메시지 컨텐츠 필터 사용 예는 이 태스크 끝의 예를 참조하십시오.
- 필터가 유효하지 않은 경우에 대한 오류 처리를 코딩하십시오.
- 애플리케이션을 호출하십시오.
예
이 XML 코드 예는 XPath 선택기를 사용한 메시지 컨텐츠 필터링을 보여줍니다. 이 예에서는 NotificationConsumer 애플리케이션으로 표시되는 비즈니스가 $1,000,000가 넘는 자금 이체에 대한 알림을 받으려고 합니다. 모니터링 애플리케이션은 다음 WS-Notification 등록 메시지에서 유효한 XPath 버전 1.0 메시지 컨텐츠 필터를 지정하여 NotificationConsumer 대신 등록합니다.
<wsnt:Subscribe>
<wsnt:ConsumerReference>
wsa:EndpointReference
</wsnt:ConsumerReference>
<wsnt:Filter>
[ <wsnt:TopicExpression Dialect="xsd:anyURI">
{any} ?
</wsnt:TopicExpression> |
<wsnt:ProducerProperties Dialect="xsd:anyURI">
{any} ?
</wsnt:ProducerProperties> |
<wsnt:MessageContent Dialect="xsd:anyURI">
/bankTransfer[value %gt; 1,000,000]
</wsnt:MessageContent> |
{any} *
] *
</wsnt:Filter> ?
<wsnt:InitialTerminationTime>
[xsd:dateTime | xsd:duration]
</wsnt:InitialTerminationTime> ?
<wsnt:SubscriptionPolicy>
[ <wsnt:UseRaw/> |
{any}
] *
</wsnt:SubscriptionPolicy> ?
{any}*
</wsnt:Subscribe>
WS-Notification 서비스는 등록과 해당 필터를 저장합니다.
그런 다음 다른 WS-Notification 애플리케이션이 메시지 본문에 다음 정보가 포함된 알림을 공개합니다.
<bankTransfer origin="123456 87654321" target="224466 88664422">
<originName>IBM Corporation</originName>
<targetName>Matt Roberts</targetName>
<date>02/02/2006</date>
<value currency="USD">100,000,000</value>
</bankTransfer>
애플리케이션 서버의 WS-Notification 서비스는 이전 등록에 대한 이 공개의 일치 여부를 비교하고 등록에 지정된 이용자에게 알림을 전달합니다.