2011-05-01 5 views
4

MQ 6.0.2와 MQ JMS 인터페이스를 사용하고 있습니다.IBM MQ JMS 인터페이스에서 JMS 등록 정보를 사용하는 방법은 무엇입니까?

사전 정의 된 속성 만 지원되며 임의의 속성은 지원되지 않는 것으로 보입니다. 예컨대 내가 수 적절히 getJMSCorrelationID(), getJMSPriority() 등 그러나, 발신자상의 임의의 속성을 설정할 때

message.getStringProperty("my arbitrary name"); 
:

message.setStringProperty("my arbitrary name", "value"); 

I 수신기에 메시지로부터 특성을 얻을 수

나는 간단히 null을 얻습니다.

JMS 구현 에서처럼이를 수행 할 수 있습니까? 아니면 MQ JMS 제한 사항입니까? JMS 1.1 specification

+0

한편, 마지막 질문은 WebSphere MQ에 관한 것이지만 제목은 'MS JMS'입니다. MSMQ 또는 WMQ를 사용하고 있습니까? WebSphere MQ 인 경우보다 일반적인 태그 mq 대신 websshere-mq 태그를 사용하십시오. 그러면 더 빨리 찾을 수 있습니다. 모든 mq 태그는 상당히 적은 양이므로 여기에 더 구체적으로 질문 할 가능성이 높습니다. 내가 다시 태그를 붙이려고 할 때 실제로 MSMQ 질문 일 수 있습니다. –

+0

물론, 나는 다시 태어났다. 감사. – erezul

답변

2

:

식별자는 무제한 길이 문자를 시작 Java 식별자로 를 시작해야 문자 순서입니다; 뒤에 오는 모든 문자 은 Java 식별자 부분 문자 여야합니다. 식별자 시작 문자는 문자 .isJavaIdentifierStart 이 true를 반환하는 문자입니다. 여기에는 '_'및 '$'이 포함됩니다. 식별자 부분 문자는 이고 문자는 Character.isJavaIdentifierPart는 을 반환합니다. 다음 중 하나 인 경우 문자가 Java 식별자의 일부가 될 수

: 여기에 단서를 다음

식별자에 유효한 문자를 나열하는 Character.isJavaIdentifierPart 방법에 대한 Javadoc을 우리가 걸립니다 사실 : 공백은 특히 유효한 답하라 세트에서 제외됩니다

* it is a letter 
* it is a currency symbol (such as '$') 
* it is a connecting punctuation character (such as '_') 
* it is a digit 
* it is a numeric letter (such as a Roman numeral character) 
* it is a combining mark 
* it is a non-spacing mark 
* isIdentifierIgnorable(codePoint) returns true for the character 

하는 것으로 ifier 문자. set of valid first characters 좀 더 제한적이며, 다음과 같은 문자를 포함한다 :

* isLetter(ch) returns true 
* getType(ch) returns LETTER_NUMBER 
* ch is a currency symbol (such as "$") 
* ch is a connecting punctuation character (such as "_"). 

를 사용하여 유효한 식별자하고 다시 시도하십시오. 예를 들어 :

message.setStringProperty("my.arbitrary.name", "value");
message.getStringProperty("my.arbitrary.name");

또는 아마도 ... 그런데

message.setStringProperty("myArbitraryName", "value");


message.getStringProperty("myArbitraryName");

, 당신의 빨리 V7로 전환합니다. 일반적으로 속성에 대한 지원이 훨씬 뛰어날뿐만 아니라 MQMD 헤더를 직접 읽고 쓸 수있는 능력이 크게 향상되었습니다. as shown in the IBM example.당신은 전체 클라이언트를 설치하는 경우

+0

저는 sorrey입니다. 이것은 나에게 명확하지 않습니다 :-(코드를 다른 것으로 변경해야한다고 제안합니까? message.setStringProperty ("내 임의의 이름", "값"); ? 예를 들려 줄 수 있습니까? – erezul

+1

기본적으로 식별자는 공백을 포함 할 수 없습니다. 유효한 char을 대체하거나 Java 변수 이름 :'myArbitraryProperty'와 같이 함께 실행하십시오. –

4

, 당신은 /opt/mqm/sampC:\Program Files\IBM\WebSphere MQ\tools\jms\samples\interactive\ 또는 어딘가로 이동 SampleConsumerJava.javaSampleProducerJava.java 찾아보실 수 있습니다. 샘플 생산자 프로그램에서

는 :
// Set custom properties 
    msg.setStringProperty("MyStringProperty", "My Year Of Birth"); 
    msg.setIntProperty("MyIntProperty", 2007); 

그리고 샘플 소비자로부터

:

// Get values for custom properties, if available 
    String property1 = msg.getStringProperty("MyStringProperty"); 

    // Get value for an int property, store the result in long to validate 
    // the get operation. 
    long property2 = ((long) Integer.MAX_VALUE) + 1; 
    property2 = msg.getIntProperty("MyIntProperty"); 

    if ((property1 != null) && (property2 < Integer.MAX_VALUE)) { 
    System.out.println("[Message has my custom properties]"); 

속성 이름은 자바 변수 이름에 대한 규칙을 따르고 캔트 그들에 공백이있다.

+0

+1 코드 샘플 및 전체 클라이언트 설치를 언급하십시오. –