Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use JMS Properties on IBM MQ JMS Interface?

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?

like image 609
erezul Avatar asked May 01 '11 08:05

erezul


1 Answers

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.

like image 130
mqrus Avatar answered Sep 28 '22 06:09

mqrus