createQueue 또는 createTopic 메소드 및 기본 메시징 제공자
JNDI 검색을 사용하지 않고 Session.createQueue(String) 메소드나 Session.createTopic(String) 메소드를 사용하여 기본 메시징 제공자로 JMS 큐 또는 JMS 주제를 작성할 수 있습니다.
Queue q = mySession.createQueue("Q1");
기존 대상 Q1을 참조하는 데 사용될 수 있는 JMS 큐 인스턴스를 작성합니다.기본 메시징 제공자와 함께, 기존 대상은 세션이 연결된 버스의 큐나 주제 공간에 존재합니다.
createQueue
Session.createQueue(String) 메소드는 기존 대상을 표시하는 JMS 큐 오브젝트를 작성하는 데 사용됩니다. JNDI 검색으로 관리상 정의된 JMS 큐 오브젝트를 얻는, 대체이지만 덜 다루기 쉬운 방법을 제공합니다.
- 단순 양식
- 가장 단순한 양식으로 createQueue 메소드에 대한 매개변수는
세션이 연결된 버스에서 기존 대상의 이름입니다. 예를 들어, Q1이라는 큐 이름이 존재하면
다음 메소드는 해당 대상을 참조하는 데 사용될 수 있는 JMS 큐 인스턴스를 작성합니다.
Queue q = mySession.createQueue("Q1");
- URI 양식
- 보다 복잡한 상황의 경우, 애플리케이션은 URI-기반 포맷을 사용할 수 있습니다. URI 포맷을 사용하면
Queue 오브젝트의 여러 특성을 설정하기 위해 임의 숫자의 이름 값 쌍이 제공될 수 있습니다.
큐 URI는 접두부 queue://로 식별되며, 다음에 대상의 이름이 표시됩니다. 이전의 Q1에 대한 간단한 양식은
다음 URI로 표현될 수 있습니다.
Queue q = mySession.createQueue("queue://Q1");
이름 값 쌍은 물음표 ?로 소개됩니다. 예를 들어, 애플리케이션은 하나의 버스에 세션을 연결한 후, 다음 포맷을 사용하여 otherBus라는 다른 버스에서 Q2에 대한 JMS 큐 인스턴스를 작성할 수 있습니다.
IBM MQ로 메시지를 보내면, 큐 이름 다음에는 at 기호(@) 및 큐가 있는 큐 관리자의 이름이 표시되어야 합니다. 예를 들어 다음과 같습니다.Queue q = mySession.createQueue("queue://Q2?busName=otherBus");
Queue q = mySession.createQueue("queue://Q2@qmgr?busName=otherBus");
여러 이름 값 쌍은 엠퍼샌드 문자 &로 분리됩니다. 예를 들어 다음과 같습니다.Queue q = mySession.createQueue("queue://Q2?busName=otherBus&deliveryMode= Application&readAhead=AsConnection&priority=6");
- 특성
- busName, deliveryMode, priority, readAhead 및 timeToLive. 이 특성의 설명은 생성된 API 정보를 참조하십시오.
createTopic
Session.createTopic(String) 메소드는 기존 대상을 표시하는 JMS 주제 오브젝트를 작성하는 데 사용됩니다. (토픽의 경우, 존재하는 토픽이 아닌 토픽 공간입니다.) JNDI 검색으로 관리상 정의된 JMS 주제를 얻는, 대체이지만 덜 다루기 쉬운 방법을 제공합니다.
- 단순 양식
- 가장 단순한 양식으로 createTopic 메소드에 대한 매개변수는 세션이 연결된 버스에서 기본 토픽 공간의 토픽 이름입니다. 예를 들어,
기본 토픽 공간이 존재하면 사용될 수 있는 JMS 주제 인스턴스는 기본 토픽 공간의 cats
토픽을 참조합니다.
Topic t = mySession.createTopic("cats");
기본이 아닌 토픽 공간을 지정하려면, 양식 topicSpace:topic의 특수 구문을 사용할 수 있습니다. 예를 들어 다음과 같습니다.Topic t = mySession.createTopic("kennelTopicSpace:dogs");
- URI 양식
- 보다 복잡한 상황의 경우, URI 기반 포맷을 사용할 수 있습니다. 토픽
URI는 접두부 topic://로 식별되며 다음에 토픽의 이름이 표시됩니다. 이전 예는 다음 URI로 표현될 수 있습니다.
Topic t = mySession.createTopic("topic://cats"); Topic t = mySession.createTopic("topic://dogs?topicSpace=kennelTopicSpace");
큐에 대해 다중 이름 값 쌍은 앰퍼샌드 &로 분리됩니다.
- 특성
- busName, deliveryMode, priority, readAhead, timeToLive 및 topicSpace. 이 특성의 설명은 생성된 API 정보를 참조하십시오.
MA88 URI 지원
WebSphere® Application Server 버전 5.1 애플리케이션은 createQueue 및 createTopic 메소드를 사용하여 버전 5 임베디드 메시징 제공자(버전 5.1 JMS 메시징 제공자)로 JMS 큐 및 토픽 오브젝트를 작성할 수 있습니다. 이 애플리케이션 마이그레이션을 지원하기 위해, 기본 메시징 제공자(서비스 통합 버스)는 createQueue 및 createTopic 메소드에 대해 유효한 MA88-특정 문자열 매개변수의 많은 서브세트를 지원합니다.
- 기본 큐 관리자
- 큐에 대한 MA88 URI는 큐 관리자의 이름을 포함합니다. 예를 들어 다음과 같습니다.
queue://qm/queue
기본 큐 관리자를 지정하기 위해 큐 관리자 이름은 생략됩니다. 예를 들어 queue:///queue와 같습니다(3개의 슬래시 문자, /// 주의). 기본 큐 관리자의 해석이 논리적으로 현재 버스의 큐의 개념과 일치하기 때문에, 버스는 queue: 접두부 다음의 3개의 슬래시 문자의 존재를 용인합니다. 이렇게 하면 기본 큐 관리자로 MA88 큐 URI가 변경 없이 버스에서 사용될 수 있습니다.
- 기본이 아닌 큐 관리자
- MA88 큐 URI가 기본이 아닌 큐 관리자를 queue://qm/queue에서처럼 지정한 경우, 버스에 모호한 해석이 있습니다. 잠재적인 문제점을 강조표시하고 이식 프로세스 중 대상이 지정된 고려사항인지 확인하려면, createQueue() 메소드에 전달한 경우 이러한 URI는 JMSException을 생성합니다.
- MA88 특성
- 버스 URI로 MA88 URI는 대상 특성을 지정하는 여러 이름 값 쌍을 포함할 수 있습니다. 많은 MA88 특정 특성은
버스에 직접 등가 항목이 없으며 자동으로 무시됩니다.
그러나 다음 MA88 특성은 버스 동등에 맵핑됩니다.
MA88 이름 서비스 통합 버스 이름 참고 만기 timeToLive 지속성 deliveryMode 1 = 비지속적
2 = 지속적
기타 = 애플리케이션
토픽 와일드카드 변환
메시지 이용에 사용된 토픽은 와일드카드를 포함할 수 있습니다. MA88에서 사용된 와일드카드 구문은 버스에서 사용된 XPath 구문과 다르므로, MA88 URI가 와일드카드를 포함한 경우 XPath 동등으로 변환하려고 합니다. 수행된 변환은 MA88 URI에서 brokerVersion 특성의 존재에 따라 다릅니다. WebSphere Application Server 버전 5.1 기본 메시징 제공자는 이름 서버 쌍에 brokerVersion=1을 포함하도록 토픽 와일드카드를 지정하는 URI를 필요로 합니다. 그러므로 버스는 brokerVersion=1을 트리거로 사용하여 XPath 와일드카드 변환에 대한 MQSI를 착수합니다.
대소문자 구분
createQueue 및 createTopic용 문자열 매개변수의 모든 부분은 대소문자를 구분합니다.
동일 특성의 다중 인스턴스
URI가 충돌되는 값이 있는 지정된 특성의 다중 일치 항목을 포함하는 경우, 사용되는 값이 지정되지 않습니다.
MA88 및 버스 특성 충돌
URI는 특성 및 해당 특성의 MA88 동등 항목을 모두 포함하는 경우, 사용되는 값이 지정되지 않습니다.
알 수 없는 특성
인식되지 않는 특성 이름에 대한 이름 값 쌍은 오류 보고 없이 무시됩니다.
특수 문자 이스케이프
- : (콜론)
- 짧은 양식 토픽 문자열에서 토픽 영역과 토픽 사이에 구분 기호로 사용됩니다.
- ? (물음표)
- 이름 값 쌍의 시작을 표시하는 데 사용됩니다.
- & (앰퍼샌드)
- 다중 이름 값 쌍을 구분하는 데 사용됩니다.
createTopic("myTop\\:ic") creates a topic with the name "myTop:ic"
createTopic("topic://my\\?Topi\\\\c") creates a topic with the name "my?Topi\c"
createQueue("queue://q1?busName=silly\\&bus") creates a queue with bus name "silly&bus"