I'm using MQ JMS interface with MQ 6.0.2.
It seems that only pre defined properties are suported and not arbitrary ones.
for instance, I can properly getJMSCorrelationID()
, getJMSPriority()
etc. However, when i set an arbitrary property on the sender:
message.setStringProperty("my arbitrary name", "value");
I can't get the property from the message on the receiver:
message.getStringProperty("my arbitrary name");
I simply get null
.
Is there a way to do that as in any JMS implementation, or is that an MQ JMS limitation?
If you have the complete client install, you can go to C:\Program Files\IBM\WebSphere MQ\tools\jms\samples\interactive\
or somewhere in /opt/mqm/samp
and look for SampleConsumerJava.java
and SampleProducerJava.java
.
From the sample Producer program:
// Set custom properties
msg.setStringProperty("MyStringProperty", "My Year Of Birth");
msg.setIntProperty("MyIntProperty", 2007);
And from the sample Consumer:
// 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]");
Property names follow the rules for Java variable names and cant have spaces in them.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With