protected int extractProducerCountFromMessage(Message message, int count) { try { Object value = message.getObjectProperty("producerCount"); if (value instanceof Number) { Number n = (Number)value; return n.intValue(); } LOG.warn("No producerCount header available on the message: " + message); } catch (Exception e) { LOG.warn("Failed to extract producerCount from message: " + message + ".Reason: " + e, e); } return count; }
/** * Lets rely by default on the broker telling us what the consumer count is * as it can ensure that we are up to date at all times and have not * received messages out of order etc. */ protected int extractConsumerCountFromMessage(Message message, int count) { try { Object value = message.getObjectProperty("consumerCount"); if (value instanceof Number) { Number n = (Number)value; return n.intValue(); } LOG.warn("No consumerCount header available on the message: " + message); } catch (Exception e) { LOG.warn("Failed to extract consumerCount from message: " + message + ".Reason: " + e, e); } return count; }
@SuppressWarnings("unchecked") private Map<String, String> extractMessageProperties(final Message message) { final Map<String, String> properties = new HashMap<>(); try { final Enumeration<String> propertyNames = message.getPropertyNames(); while (propertyNames.hasMoreElements()) { String propertyName = propertyNames.nextElement(); properties.put(propertyName, String.valueOf(message.getObjectProperty(propertyName))); } } catch (JMSException e) { this.processLog.warn("Failed to extract message properties", e); } return properties; }
static void doFilterProperties( Message message, Set<String> namesToClear, ArrayList<Object> retainedProperties ) throws JMSException { Enumeration<?> names = message.getPropertyNames(); while (names.hasMoreElements()) { String name = (String) names.nextElement(); Object value = message.getObjectProperty(name); if (!namesToClear.contains(name) && value != null) { retainedProperties.add(name); retainedProperties.add(value); } } // redo the properties to keep message.clearProperties(); for (int i = 0, length = retainedProperties.size(); i < length; i += 2) { message.setObjectProperty( retainedProperties.get(i).toString(), retainedProperties.get(i + 1) ); } }
try { String headerName = this.toHeaderName(propertyName); headers.put(headerName, jmsMessage.getObjectProperty(propertyName));
@Test public void userDefinedPropertyMappedFromHeader() throws JMSException { Message<String> message = initBuilder() .setHeader("foo", 123) .build(); javax.jms.Message jmsMessage = new StubTextMessage(); mapper.fromHeaders(message.getHeaders(), jmsMessage); Object value = jmsMessage.getObjectProperty("foo"); assertNotNull(value); assertEquals(Integer.class, value.getClass()); assertEquals(123, ((Integer) value).intValue()); }
@Test public void propertyMappingExceptionIsNotFatal() throws JMSException { Message<String> message = initBuilder() .setHeader("foo", 123) .setHeader("bad", 456) .setHeader("bar", 789) .build(); javax.jms.Message jmsMessage = new StubTextMessage() { @Override public void setObjectProperty(String name, Object value) throws JMSException { if (name.equals("bad")) { throw new JMSException("illegal property"); } super.setObjectProperty(name, value); } }; mapper.fromHeaders(message.getHeaders(), jmsMessage); Object foo = jmsMessage.getObjectProperty("foo"); assertNotNull(foo); Object bar = jmsMessage.getObjectProperty("bar"); assertNotNull(bar); Object bad = jmsMessage.getObjectProperty("bad"); assertNull(bad); }
@Test public void illegalArgumentExceptionIsNotFatal() throws JMSException { Message<String> message = initBuilder() .setHeader("foo", 123) .setHeader("bad", 456) .setHeader("bar", 789) .build(); javax.jms.Message jmsMessage = new StubTextMessage() { @Override public void setObjectProperty(String name, Object value) throws JMSException { if (name.equals("bad")) { throw new IllegalArgumentException("illegal property"); } super.setObjectProperty(name, value); } }; mapper.fromHeaders(message.getHeaders(), jmsMessage); Object foo = jmsMessage.getObjectProperty("foo"); assertNotNull(foo); Object bar = jmsMessage.getObjectProperty("bar"); assertNotNull(bar); Object bad = jmsMessage.getObjectProperty("bad"); assertNull(bad); }
final String propName = (String) enumeration.nextElement(); final Object value = message.getObjectProperty(propName);
@Test public void userDefinedPropertyMappedFromHeaderWithCustomPrefix() throws JMSException { Message<String> message = initBuilder() .setHeader("foo", 123) .build(); mapper.setOutboundPrefix("custom_"); javax.jms.Message jmsMessage = new StubTextMessage(); mapper.fromHeaders(message.getHeaders(), jmsMessage); Object value = jmsMessage.getObjectProperty("custom_foo"); assertNotNull(value); assertEquals(Integer.class, value.getClass()); assertEquals(123, ((Integer) value).intValue()); }
@Test public void userDefinedPropertyWithUnsupportedType() throws JMSException { Destination destination = new Destination() {}; Message<String> message = initBuilder() .setHeader("destination", destination) .build(); javax.jms.Message jmsMessage = new StubTextMessage(); mapper.fromHeaders(message.getHeaders(), jmsMessage); Object value = jmsMessage.getObjectProperty("destination"); assertNull(value); }
@Test public void contentTypePropertyMappedFromHeader() throws JMSException { Message<String> message = initBuilder() .setHeader(MessageHeaders.CONTENT_TYPE, "foo") .build(); javax.jms.Message jmsMessage = new StubTextMessage(); mapper.fromHeaders(message.getHeaders(), jmsMessage); Object value = jmsMessage.getObjectProperty(JmsHeaderMapper.CONTENT_TYPE_PROPERTY); assertNotNull(value); assertEquals("foo", value); }
String name = props.nextElement(); Object prop = foreign.getObjectProperty(name);
/** * Copies the standard JMS and user defined properties from the givem * message to the specified message * * @param fromMessage the message to take the properties from * @param toMessage the message to add the properties to * @throws JMSException */ public static void copyProperties(Message fromMessage, Message toMessage) throws JMSException { toMessage.setJMSMessageID(fromMessage.getJMSMessageID()); toMessage.setJMSCorrelationID(fromMessage.getJMSCorrelationID()); toMessage.setJMSReplyTo(transformDestination(fromMessage.getJMSReplyTo())); toMessage.setJMSDestination(transformDestination(fromMessage.getJMSDestination())); toMessage.setJMSDeliveryMode(fromMessage.getJMSDeliveryMode()); toMessage.setJMSRedelivered(fromMessage.getJMSRedelivered()); toMessage.setJMSType(fromMessage.getJMSType()); toMessage.setJMSExpiration(fromMessage.getJMSExpiration()); toMessage.setJMSPriority(fromMessage.getJMSPriority()); toMessage.setJMSTimestamp(fromMessage.getJMSTimestamp()); Enumeration propertyNames = fromMessage.getPropertyNames(); while (propertyNames.hasMoreElements()) { String name = propertyNames.nextElement().toString(); Object obj = fromMessage.getObjectProperty(name); toMessage.setObjectProperty(name, obj); } } }
@Test public void testPropertyMappingExceptionIsNotFatal() throws JMSException { Message<String> message = MessageBuilder.withPayload("test") .setHeader("foo", new Integer(123)) .setHeader("bad", new Integer(456)) .setHeader("bar", new Integer(789)) .build(); DefaultJmsHeaderMapper mapper = new DefaultJmsHeaderMapper(); javax.jms.Message jmsMessage = new StubTextMessage() { @Override public void setObjectProperty(String name, Object value) throws JMSException { if (name.equals("bad")) { throw new JMSException("illegal property"); } super.setObjectProperty(name, value); } }; mapper.fromHeaders(message.getHeaders(), jmsMessage); Object foo = jmsMessage.getObjectProperty("foo"); assertNotNull(foo); Object bar = jmsMessage.getObjectProperty("bar"); assertNotNull(bar); Object bad = jmsMessage.getObjectProperty("bad"); assertNull(bad); }
@Test public void testIllegalArgumentExceptionIsNotFatal() throws JMSException { Message<String> message = MessageBuilder.withPayload("test") .setHeader("foo", new Integer(123)) .setHeader("bad", new Integer(456)) .setHeader("bar", new Integer(789)) .build(); DefaultJmsHeaderMapper mapper = new DefaultJmsHeaderMapper(); javax.jms.Message jmsMessage = new StubTextMessage() { @Override public void setObjectProperty(String name, Object value) throws JMSException { if (name.equals("bad")) { throw new IllegalArgumentException("illegal property"); } super.setObjectProperty(name, value); } }; mapper.fromHeaders(message.getHeaders(), jmsMessage); Object foo = jmsMessage.getObjectProperty("foo"); assertNotNull(foo); Object bar = jmsMessage.getObjectProperty("bar"); assertNotNull(bar); Object bad = jmsMessage.getObjectProperty("bad"); assertNull(bad); }
@Test public void testUserDefinedPropertyMappedFromHeader() throws JMSException { Message<String> message = MessageBuilder.withPayload("test") .setHeader("foo", new Integer(123)) .build(); DefaultJmsHeaderMapper mapper = new DefaultJmsHeaderMapper(); javax.jms.Message jmsMessage = new StubTextMessage(); mapper.fromHeaders(message.getHeaders(), jmsMessage); Object value = jmsMessage.getObjectProperty("foo"); assertNotNull(value); assertEquals(Integer.class, value.getClass()); assertEquals(123, ((Integer) value).intValue()); }
@Test public void testUserDefinedPropertyMappedFromHeaderWithCustomPrefix() throws JMSException { Message<String> message = MessageBuilder.withPayload("test") .setHeader("foo", new Integer(123)) .build(); DefaultJmsHeaderMapper mapper = new DefaultJmsHeaderMapper(); mapper.setOutboundPrefix("custom_"); javax.jms.Message jmsMessage = new StubTextMessage(); mapper.fromHeaders(message.getHeaders(), jmsMessage); Object value = jmsMessage.getObjectProperty("custom_foo"); assertNotNull(value); assertEquals(Integer.class, value.getClass()); assertEquals(123, ((Integer) value).intValue()); }
@Test public void testUserDefinedPropertyWithUnsupportedType() throws JMSException { Destination destination = new Destination() { }; Message<String> message = MessageBuilder.withPayload("test") .setHeader("destination", destination) .build(); DefaultJmsHeaderMapper mapper = new DefaultJmsHeaderMapper(); javax.jms.Message jmsMessage = new StubTextMessage(); mapper.fromHeaders(message.getHeaders(), jmsMessage); Object value = jmsMessage.getObjectProperty("destination"); assertNull(value); }
@Test public void testContentTypePropertyMappedFromHeader() throws JMSException { Message<String> message = MessageBuilder.withPayload("test") .setHeader(MessageHeaders.CONTENT_TYPE, "foo") .build(); DefaultJmsHeaderMapper mapper = new DefaultJmsHeaderMapper(); javax.jms.Message jmsMessage = new StubTextMessage(); mapper.fromHeaders(message.getHeaders(), jmsMessage); Object value = jmsMessage.getObjectProperty("content_type"); assertNotNull(value); assertEquals("foo", value); }