Copy JMS Message Properties

Is there an easy way to copy properties from one JMS message to another?

I can imagine something like this:

private void copyMessageProperties (Message msg1, Message msg2) throws JMSException { Enumeration srcProperties = msg1.getPropertyNames(); while (srcProperties.hasMoreElements()) { String propertyName = (String) srcProperties.nextElement (); // Now try to read and set try { Object obj = msg1.getObjectProperty (propertyName); msg2.setObjectProperty (propertyName, obj); continue; } catch (Exception e) {} try { String str = msg1.getStringProperty (propertyName); msg2.setStringProperty (propertyName, str); continue; ... } } } 

But this is seriously ugly. There must be another way

+6
properties jms
source share
1 answer

Here's the solution I ended up with ...

 @SuppressWarnings("unchecked") private static HashMap<String, Object> getMessageProperties(Message msg) throws JMSException { HashMap<String, Object> properties = new HashMap<String, Object> (); Enumeration srcProperties = msg.getPropertyNames(); while (srcProperties.hasMoreElements()) { String propertyName = (String)srcProperties.nextElement (); properties.put(propertyName, msg.getObjectProperty (propertyName)); } return properties; } private static void setMessageProperties(Message msg, HashMap<String, Object> properties) throws JMSException { if (properties == null) { return; } for (Map.Entry<String, Object> entry : properties.entrySet()) { String propertyName = entry.getKey (); Object value = entry.getValue (); msg.setObjectProperty(propertyName, value); } } 
+9
source share

All Articles