ere*_*zul 5 jms properties ibm-mq
我正在使用MQ JMS接口和MQ 6.0.2.
似乎只有预先定义的属性被支持而不是任意属性.比如,我可以正常getJMSCorrelationID(),getJMSPriority()等等.但是,当我设置的发件人的任意属性:
message.setStringProperty("my arbitrary name", "value");
Run Code Online (Sandbox Code Playgroud)
我无法从接收器上的消息中获取属性:
message.getStringProperty("my arbitrary name");
Run Code Online (Sandbox Code Playgroud)
我得到了null.
有没有办法像在任何JMS实现中那样做,或者是MQ JMS限制?
根据JMS 1.1 规范:
\n\n\n\n\n标识符是无限长度的字符序列,必须以 Java 标识符开始字符开头;以下所有字符必须是 Java 标识符部分字符。标识符起始字符是方法Character.isJavaIdentifierStart 返回true 的任何字符。这包括 \xe2\x80\x98_\xe2\x80\x99 和 \n \xe2\x80\x98$\xe2\x80\x99。标识符部分字符是方法Character.isJavaIdentifierPart 返回true 的任何字符。
\n
遵循此处的线索,我们可以找到Character.isJavaIdentifierPart方法的 Javadoc ,该方法列出了标识符的有效字符:
\n\n\n\n\n如果满足以下任一条件,则字符可能是 Java 标识符的一部分:
\n\nRun Code Online (Sandbox Code Playgroud)\n* it is a letter\n* it is a currency symbol (such as \'$\')\n* it is a connecting punctuation character (such as \'_\')\n* it is a digit\n* it is a numeric letter (such as a Roman numeral character)\n* it is a combining mark\n* it is a non-spacing mark\n* isIdentifierIgnorable(codePoint) returns true for the character\n
请注意,有效标识符字符集中特别排除了空格。有效的第一个字符集有一点限制,包括以下字符:
\n\n\n\n\nRun Code Online (Sandbox Code Playgroud)\n* isLetter(ch) returns true\n* getType(ch) returns LETTER_NUMBER\n* ch is a currency symbol (such as "$")\n* ch is a connecting punctuation character (such as "_").\n
使用有效的标识符并重试。例如:
\n\nmessage.setStringProperty("my.arbitrary.name", "value");
\nmessage.getStringProperty("my.arbitrary.name");
或者可能...
\n\nmessage.setStringProperty("myArbitraryName", "value");
\nmessage.getStringProperty("myArbitraryName");
顺便说一下,尽早切换到 V7。不仅对属性的支持总体上更好,而且直接读/写 MQMD 标头的能力也大大提高,如 IBM 示例所示。
\n| 归档时间: |
|
| 查看次数: |
5974 次 |
| 最近记录: |