subscriber 등록 메시지

subscriber 등록 명령 메시지는 subscriber에서 브로커로, 또는 subscriber 대신 다른 응용프로그램에서 브로커로 송신되며 subscription 지점의 하나 이상의 토픽을 subscribe하고자 함을 나타냅니다. 메시지 컨텐츠 필터 또한 지정할 수 있습니다.

publish/subscribe 필터 표현식에서 괄호를 중첩하면 성능이 급격하게 저하될 수 있습니다. 필터 표현식에는 괄호를 6단계 이상 중첩하지 마십시오.

메시지는 브로커의 컨트롤 큐인 SYSTEM.BROKER.CONTROL.QUEUE로 송신됩니다. subscription의 토픽에 대한 액세스 권한(브로커의 시스템 관리자가 설정)과 이 큐에 메시지를 넣을 권한이 필요합니다.

사용자가 토픽의 전체가 아닌 일부에 대한 권한을 가지고 있을 경우, 권한이 있는 토픽에만 등록됩니다. 경고 응답은 등록되지 않은 토픽을 나타냅니다.

명령 메시지를 브로커로 보낼 때 필요한 메시지 설명자(MQMD) 매개변수에 대한 자세한 내용은 브로커 응답 메시지를 참조하십시오.

큐가 임시 다이나믹 큐인 경우, 큐가 닫힐 때 브로커는 자동으로 subscription을 등록 취소합니다.

Properties

<Command> (MQPSC_COMMAND)
The value is RegSub (MQPSC_REGISTER_SUBSCRIBER). 이 등록 정보는 반드시 지정해야 합니다.
<Topic> (MQPSC_TOPIC)
Subscriber가 publication을 수신하려는 토픽. 토픽의 일부로 와일드카드를 지정할 수 있습니다.

이 등록 정보는 반드시 지정해야 하며, 필요에 따라 여러 토픽에 선택적으로 반복할 수 있습니다.

<SubPoint> (MQPSC_SUBSCRIPTION_POINT)
값은 subscription이 연결된 subscription 지점입니다.

이 등록 정보를 생략할 경우, 디폴트 subscription 지점이 사용됩니다.

<Filter> (MQPSC_FILTER)
값은 publication 메시지의 컨텐츠 필터로 사용되는 SQL 표현식입니다. 지정된 토픽의 publication이 필터와 일치할 경우 subscriber로 송신됩니다.

이 등록 정보를 생략할 경우, 컨텐츠 필터링이 발생하지 않습니다.

<RegOpt> (MQPSC_REGISTRATION_OPTION)
등록 옵션 등록 정보의 값은 다음과 같습니다.
AddName  
(MQPSC_ADD_NAME)

이 subscription 등록 명령의 기존 ID와 일치하는 기존 subscription에 대해 지정했지만 현재 SubName 값이 없는 경우, 이 명령이 지정된 SubName이 subscription에 추가됩니다.

AddName이 지정되면 SubName 필드가 필수이며, 그렇지 않으면 MQRCCF_REG_OPTIONS_ERROR가 리턴됩니다.

CorrelAsId  
(MQPSC_CORREL_ID_AS_IDENTITY)

메시지 설명자(MQMD)의 CorrelId는 subscriber 큐로 일치하는 publication을 송신하는 데 사용됩니다. CorrelId는 0이어야 합니다.

FullResp  
(MQPSC_FULL_RESPONSE)

지정된 경우, 명령이 실패하지 않으면 subscription의 모든 속성이 응답 메시지에 리턴됩니다.

FullResp는 명령 메시지가 단일 subscription을 나타낼 때만 올바릅니다. 그러므로, 명령에 하나의 토픽만 사용할 수 있습니다. 그렇게 하지 않을 경우 리턴 코드 MQRCCF_REG_OPTIONS_ERROR가 표시되면서 명령이 실패합니다.

InformIfRet  
(MQPSC_INFORM_IF_RETAINED)

브로커는 subscriber 등록 또는 갱신 요청 명령의 응답으로 publish 메시지를 송신할 때 publication 보유 여부를 subscriber로 알립니다. 브로커는 메시지에 IsRetainedPub publication 옵션을 넣어 이 작업을 수행합니다.

JoinExcl  
(MQPSC_JOIN_EXCLUSIVE)

이 옵션은 지정된 SubIdentity를 subscription ID 세트의 제외 구성원으로 추가해야 하며 다른 어떠한 ID도 세트에 추가할 수 없음을 나타냅니다.

ID가 이미 결합되어 '공유' 상태이며 세트의 유일한 항목인 경우, 세트는 ID가 보유한 독점 잠금으로 변경됩니다. 혹은 subscription이 현재 ID 세트(공유 액세스를 가진)에 다른 ID를 가지고 있을 경우, 리턴 코드 MQRCCF_SUBSCRIPTION_IN_USE가 표시되면서 명령이 실패합니다.

JoinShared  
(MQPSC_JOIN_SHARED)

이 옵션은 지정된 SubIdentity를 subscription의 ID 세트에 추가해야 함을 나타냅니다.

현재 subscription이 독점 잠금 상태인 경우(JoinExcl 옵션 사용), subscription을 잠근 ID가 이 명령 메시지의 ID와 동일하지 않은 경우 MQRCCF_SUBSCRIPTION_LOCKED 리턴 코드를 표시하면서 명령에 실패합니다. 이 경우, 잠금이 자동으로 공유 잠금으로 수정됩니다.

Local  
(MQPSC_LOCAL)

Subscription은 로컬이며 네트워크의 다른 브로커로 분산되지 않습니다. 다른 브로커에서 행해진 publication은 해당 전역 subscription이 없는 경우 이 subscriber로 전달되지 않습니다.

NewPubsOnly  
(MQPSC_NEW_PUBS_ONLY)

Subscription이 등록될 때 존재하는 보유 publication은 subscriber로 송신되지 않습니다. 새 publication만이 송신됩니다.

Subscriber가 재등록하고 이 옵션을 더 이상 설정하지 않도록 변경할 경우, 이미 송신된 publication이 다시 송신됩니다.

NoAlter  
(MQPSC_NO_ALTER)

기존의 일치 subscription의 속성이 변경되지 않습니다.

Subscription이 작성 중일 경우, 이 옵션은 무시됩니다. 지정된 다른 모든 옵션이 새 subscription에 적용됩니다.

SubIdentity에도 조인 옵션(JoinExcl 또는 JoinShared) 중 하나가 지정된 경우, NoAlter의 지정 여부와 상관없이 ID가 ID 세트에 추가됩니다.

None  
(MQPSC_NONE)

모든 등록 옵션은 디폴트 값을 가집니다.

Subscriber가 이미 등록되어 있다면 해당 옵션은 디폴트 값으로 재설정되고(이는 등록 옵션 등록 정보를 생략하는 것과 동일한 효과를 가지지 않음) subscriber 등록 메시지의 MQMD로부터 subscription 만기가 갱신됩니다.

다른 등록 옵션이 동시에 지정된 경우, None은 무시됩니다.

NonPers  
(MQPSC_NON_PERSISTENT)

이 subscription과 일치하는 publication이 비지속 메시지로서 subscriber에 전달됩니다.

Pers  
(MQPSC_PERSISTENT)

이 subscription과 일치하는 publication이 지속 메시지로서 subscriber에 전달됩니다.

PersAsPub  
(MQPSC_PERSISTENT_AS_PUBLISH)

이 subscription과 일치하는 publication이 publisher가 지정한 지속성을 가지고 있는 subscriber에 전달됩니다. 이것이 디폴트 작동입니다.

PersAsQueue  
(MQPSC_PERSISTENT_AS_Q)

이 subscription과 일치하는 publication이 subscriber 큐에 지정된 지속성을 가지고 subscriber에 전달됩니다.

PubOnReqOnly  
(MQPSC_PUB_ON_REQUEST_ONLY)

브로커는 Request Update 명령 메시지에 대한 응답인 경우를 제외하고 subscriber로 publication을 송신하지 않습니다.

VariableUserId  
(MQPSC_VARIABLE_USER_ID)

지정된 경우 subscriber ID(큐, 큐 관리자, correlid)는 단일 사용자 ID로 제한되지 않습니다. 이는 원본 등록 메시지의 사용자 ID를 subscriber의 ID와 연관시키고 그때부터 다른 사용자가 해당 ID를 사용하지 못하도록 하는 기존의 브로커 작동과 다릅니다. 새 subscriber가 동일한 ID를 사용하려고 하면 MQRCCF_DUPLICATE_SUBSCRIPTION이 리턴됩니다.

그렇기 때문에 사용자에게 적절한 권한이 있는 경우 모든 사용자가 subscription을 수정하거나 등록 취소할 수 있습니다. 따라서 사용자 ID가 원래의 subscriber ID와 일치하는지 점검할 필요가 없습니다.

이 옵션을 기존 subscription에 추가하려면 명령은 원래의 subscription 자체와 동일한 사용자 ID로 실행되어야 합니다.

request update 명령의 subscription에 VariableUserId가 설정된 경우, 이를 갱신 요청 시 설정하여 참조되는 subscription이 어떤 것인지 나타내야 합니다. 아니면 subscription을 확인하는 데 request update 명령의 사용자 ID가 사용됩니다. subscription 이름이 제공된 경우 다른 subscriber ID와 함께 이 ID는 대체됩니다.

이 옵션이 설정되지 않은 subscriber 등록 명령 메시지가 이 옵션이 설정된 기존 subscription을 참조할 경우, 이 subscription에서 옵션이 제거되고 subscription의 사용자 ID는 이제 고정됩니다. ID(queue, qmgr, correlid)는 같지만 다른 사용자 ID가 연관되어 있는 subscriber가 이미 존재할 경우 MQRCCF_DUPLICATE_IDENTITY 리턴 코드를 표시하면서 명령에 실패합니다. Subscriber ID와 하나의 사용자 ID만 연관될 수 있기 때문입니다.

등록 옵션 등록 정보가 생략되었으며 subscriber가 이미 등록된 경우, 해당 등록 옵션은 변경되지 않으며 subscriber 등록 메시지의 MQMD로부터 subscription 만기가 갱신됩니다.

subscriber가 아직 등록되지 않은 경우, 모든 등록 옵션에 디폴트 값을 취하여 새 subscription이 작성됩니다.

디폴트 값은 PersAsPub이며 다른 옵션은 설정되지 않습니다.

<QMgrName> (MQPSC_Q_MGR_NAME)
값은 브로커가 일치하는 publication을 송신하는 subscriber 큐의 큐 관리자 이름입니다.

이 등록 정보를 생략할 경우, 디폴트 값은 메시지 설명자(MQMD)의 ReplyToQMgr 이름입니다. 결과로 표시되는 이름이 공백인 경우, 디폴트는 브로커의 QMgrName입니다.

<QName> (MQPSC_Q_NAME)
값은 브로커가 일치하는 publication을 송신하는 subscriber 큐의 이름입니다.

이 등록 정보를 생략할 경우, 디폴트는 메시지 설명자(MQMD)의 ReplyToQ 이름입니다.

큐가 임시 다이나믹 큐인 경우, <RegOpt> 등록 정보에 publication의 비지속 전달(NonPers)을 지정해야 합니다.

큐가 임시 다이나믹 큐인 경우, 큐가 닫힐 때 브로커는 자동으로 subscription을 등록 취소합니다.

<SubName> (MQPSC_SUBSCRIPTION_NAME)
특정 subscription에 부여되는 이름입니다. 큐 관리자, 큐, 선택적 correlId 대신 이 이름을 사용하여 subscription을 나타낼 수 있습니다.

SubName을 갖는 subscription이 이미 존재하는 경우, 다른 모든 subscription 속성(Topic, QMgrName, QName, CorrelId, UserId, RegOpts, UserSubData, Expiry)은 새 Subscriber 등록 명령 메시지에 전달된 속성(지정된 경우)으로 대체됩니다. 그러나, QName 필드를 지정하지 않은 채 SubName이 사용되었으며 MQMD 헤더에 ReplyToQ가 지정된 경우, subscriber 큐는 ReplyToQ로 바뀝니다.

이 명령의 기존 ID와 일치하는 subscription이 이미 존재하지만 SubName이 없는 경우 AddName 옵션이 지정되어 있지 않으면 MQRCCF_DUPLICATE_SUBSCRIPTION 리턴 코드를 표시하면서 등록 명령에 실패합니다.

동일한 SubName을 지정하는 다른 Subscriber 등록 명령을 사용하여 기존에 지정된 subscription을 변경하려고 하며 새 명령의 Topic, QMgrName, QName 및 CorrelId 값이 SubName이 정의되거나 정의되어 있지 않은 기존의 다른 subscription과 일치하는 경우, 리턴 코드 MQRCCF_DUPLICATE_SUBSCRIPTION이 표시되면서 명령 실행에 실패하게 됩니다. 따라서 두 subscription 이름이 동일한 subscription을 나타내지 않게 됩니다.

<SubIdentity> (MQPSC_SUBSCRIPTION_IDENTITY)
subscription을 원하는 응용프로그램을 나타내는 문자열입니다. 최대 길이가 64자인 가변 길이 문자열로서 선택적입니다. 브로커는 각 subscription에 대한 subscriber ID 세트를 유지합니다. 각 subscription은 해당 ID가 하나의 ID만 포함하도록 할 수도 있고 무제한의 ID를 포함도록 할 수도 있습니다(JoinSharedJoinExcl 옵션 참조).

JoinShared 또는 JoinExcl 옵션을 지정하는 subscribe 명령은 SubIdentity를 subscription의 ID 세트에 추가합니다. 단 해당 ID가 아직 그곳에 없으며 기존의 ID 세트가 그러한 조치를 허용할 때, 즉 다른 어떠한 subscriber도 독점적으로 조인하지 않았으며 ID 세트가 비어 있는 경우에 한합니다.

SubIdentity가 지정된 Subscriber 등록 명령의 결과 subscription의 속성을 변경하면 해당 ID가 이 subscription의 ID 세트에서 유일한 구성원인 경우에만 성공합니다. 그렇지 않으면 리턴 코드 MQRCCF_SUBSCRIPTION_IN_USE가 표시되면서 명령이 실패합니다. 따라서 다른 관련 subscriber에게 알리지 않고 subscription의 속성이 변경되지 않게 됩니다.

64자를 초과하는 문자열을 지정하는 경우 명령문이 리턴 코드 MQRCCF_SUB_IDENTITY_ERROR와 함께 실패합니다.

<SubUserData> (MQPSC_SUBSCRIPTION_USER_DATA)
가변 길이 텍스트 문자열입니다. 브로커는 subscription과 함께 값을 저장하지만, subscriber로의 publication 전달에는 영향을 주지 않습니다. 새 값으로 동일한 subscription에 재등록하면 값을 변경할 수 있습니다. 이 속성은 응용프로그램용입니다.

SubUserData는 subscription의 Metatopic 정보(MQCACF_REG_SUB_USER_DATA)에 리턴됩니다(있는 경우).

둘 이상의 등록 옵션 값 NonPers, PersAsPub, PersAsQueue, Pers를 지정할 경우, 마지막 옵션만 사용됩니다. 개별 subscription에 이 옵션을 통합할 수 없습니다.

다음은 Subscriber 등록 명령 메시지의 NameValueData 예입니다. 샘플 응용프로그램에서 결과 서비스는 이 메시지를 사용하여 '요청 시에만 publish' 옵션이 설정하여 모든 경기의 최신 득점이 들어 있는 토픽에 대한 subscription을 등록합니다. CorrelId를 포함한 subscriber ID를 MQMD의 디폴트에서 가져옵니다.
 <psc>
  <Command>RegSub</Command>
  <RegOpt>PubOnReqOnly</RegOpt>
  <RegOpt>CorrelAsId</RegOpt>
  <Topic>Sport/Soccer/State/LatestScore/#</Topic>
 </psc>
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
aq06990_