@Override public void put(MessageProperties carrier, String key, String value) { carrier.setHeader(key, value); }
@Override public void inject(TraceContext traceContext, MessageProperties carrier) { carrier.setHeader("b3", writeB3SingleFormatWithoutParentId(traceContext)); }
@Override protected void populateUserDefinedHeader(String headerName, Object headerValue, MessageProperties amqpMessageProperties) { // do not overwrite an existing header with the same key // TODO: do we need to expose a boolean 'overwrite' flag? if (!amqpMessageProperties.getHeaders().containsKey(headerName) && !AmqpHeaders.CONTENT_TYPE.equals(headerName)) { amqpMessageProperties.setHeader(headerName, headerValue); } }
@Test public void withHeaderMapperNothingToMap() throws Exception { AmqpInboundChannelAdapter adapter = context.getBean("withHeaderMapperNothingToMap", AmqpInboundChannelAdapter.class); AbstractMessageListenerContainer mlc = TestUtils.getPropertyValue(adapter, "messageListenerContainer", AbstractMessageListenerContainer.class); ChannelAwareMessageListener listener = TestUtils.getPropertyValue(mlc, "messageListener", ChannelAwareMessageListener.class); MessageProperties amqpProperties = new MessageProperties(); amqpProperties.setAppId("test.appId"); amqpProperties.setClusterId("test.clusterId"); amqpProperties.setContentEncoding("test.contentEncoding"); amqpProperties.setContentLength(99L); amqpProperties.setContentType("test.contentType"); amqpProperties.setHeader("foo", "foo"); amqpProperties.setHeader("bar", "bar"); Message amqpMessage = new Message("hello".getBytes(), amqpProperties); listener.onMessage(amqpMessage, null); QueueChannel requestChannel = context.getBean("requestChannel", QueueChannel.class); org.springframework.messaging.Message<?> siMessage = requestChannel.receive(0); assertNull(siMessage.getHeaders().get("foo")); assertNull(siMessage.getHeaders().get("bar")); assertNull(siMessage.getHeaders().get(AmqpHeaders.CONTENT_ENCODING)); assertNull(siMessage.getHeaders().get(AmqpHeaders.CLUSTER_ID)); assertNull(siMessage.getHeaders().get(AmqpHeaders.APP_ID)); assertNull(siMessage.getHeaders().get(AmqpHeaders.CONTENT_TYPE)); }
@Test public void withHeaderMapperDefaultMapping() throws Exception { AmqpInboundChannelAdapter adapter = context.getBean("withHeaderMapperDefaultMapping", AmqpInboundChannelAdapter.class); AbstractMessageListenerContainer mlc = TestUtils.getPropertyValue(adapter, "messageListenerContainer", AbstractMessageListenerContainer.class); ChannelAwareMessageListener listener = TestUtils.getPropertyValue(mlc, "messageListener", ChannelAwareMessageListener.class); MessageProperties amqpProperties = new MessageProperties(); amqpProperties.setAppId("test.appId"); amqpProperties.setClusterId("test.clusterId"); amqpProperties.setContentEncoding("test.contentEncoding"); amqpProperties.setContentLength(99L); amqpProperties.setContentType("test.contentType"); amqpProperties.setHeader("foo", "foo"); amqpProperties.setHeader("bar", "bar"); Message amqpMessage = new Message("hello".getBytes(), amqpProperties); listener.onMessage(amqpMessage, null); QueueChannel requestChannel = context.getBean("requestChannel", QueueChannel.class); org.springframework.messaging.Message<?> siMessage = requestChannel.receive(0); assertNotNull(siMessage.getHeaders().get("bar")); assertNotNull(siMessage.getHeaders().get("foo")); assertNotNull(siMessage.getHeaders().get(AmqpHeaders.CONTENT_ENCODING)); assertNotNull(siMessage.getHeaders().get(AmqpHeaders.CLUSTER_ID)); assertNotNull(siMessage.getHeaders().get(AmqpHeaders.APP_ID)); assertNotNull(siMessage.getHeaders().get(AmqpHeaders.CONTENT_TYPE)); }
@Test public void withHeaderMapperOnlyCustomHeaders() throws Exception { AmqpInboundChannelAdapter adapter = context.getBean("withHeaderMapperOnlyCustomHeaders", AmqpInboundChannelAdapter.class); AbstractMessageListenerContainer mlc = TestUtils.getPropertyValue(adapter, "messageListenerContainer", AbstractMessageListenerContainer.class); ChannelAwareMessageListener listener = TestUtils.getPropertyValue(mlc, "messageListener", ChannelAwareMessageListener.class); MessageProperties amqpProperties = new MessageProperties(); amqpProperties.setAppId("test.appId"); amqpProperties.setClusterId("test.clusterId"); amqpProperties.setContentEncoding("test.contentEncoding"); amqpProperties.setContentLength(99L); amqpProperties.setContentType("test.contentType"); amqpProperties.setHeader("foo", "foo"); amqpProperties.setHeader("bar", "bar"); Message amqpMessage = new Message("hello".getBytes(), amqpProperties); listener.onMessage(amqpMessage, null); QueueChannel requestChannel = context.getBean("requestChannel", QueueChannel.class); org.springframework.messaging.Message<?> siMessage = requestChannel.receive(0); assertEquals("foo", siMessage.getHeaders().get("foo")); assertNull(siMessage.getHeaders().get("bar")); assertNull(siMessage.getHeaders().get(AmqpHeaders.CONTENT_ENCODING)); assertNull(siMessage.getHeaders().get(AmqpHeaders.CLUSTER_ID)); assertNull(siMessage.getHeaders().get(AmqpHeaders.APP_ID)); assertNull(siMessage.getHeaders().get(AmqpHeaders.CONTENT_TYPE)); }
@Test public void withHeaderMapperStandardAndCustomHeaders() throws Exception { AmqpInboundChannelAdapter adapter = context.getBean("withHeaderMapperStandardAndCustomHeaders", AmqpInboundChannelAdapter.class); AbstractMessageListenerContainer mlc = TestUtils.getPropertyValue(adapter, "messageListenerContainer", AbstractMessageListenerContainer.class); ChannelAwareMessageListener listener = TestUtils.getPropertyValue(mlc, "messageListener", ChannelAwareMessageListener.class); MessageProperties amqpProperties = new MessageProperties(); amqpProperties.setAppId("test.appId"); amqpProperties.setClusterId("test.clusterId"); amqpProperties.setContentEncoding("test.contentEncoding"); amqpProperties.setContentLength(99L); amqpProperties.setContentType("test.contentType"); amqpProperties.setHeader("foo", "foo"); amqpProperties.setHeader("bar", "bar"); Message amqpMessage = new Message("hello".getBytes(), amqpProperties); listener.onMessage(amqpMessage, null); QueueChannel requestChannel = context.getBean("requestChannel", QueueChannel.class); org.springframework.messaging.Message<?> siMessage = requestChannel.receive(0); assertEquals("foo", siMessage.getHeaders().get("foo")); assertNull(siMessage.getHeaders().get("bar")); assertNotNull(siMessage.getHeaders().get(AmqpHeaders.CONTENT_ENCODING)); assertNotNull(siMessage.getHeaders().get(AmqpHeaders.CLUSTER_ID)); assertNotNull(siMessage.getHeaders().get(AmqpHeaders.APP_ID)); assertNotNull(siMessage.getHeaders().get(AmqpHeaders.CONTENT_TYPE)); }
amqpProperties.setHeader("x-death", "foo"); headers = mapper.toHeadersFromReply(amqpProperties); assertEquals(MessageDeliveryMode.NON_PERSISTENT, headers.get(AmqpHeaders.RECEIVED_DELIVERY_MODE));
amqpProperties.setType("test.type"); amqpProperties.setReceivedUserId("test.userId"); amqpProperties.setHeader(AmqpHeaders.SPRING_REPLY_CORRELATION, "test.correlation"); amqpProperties.setHeader(AmqpHeaders.SPRING_REPLY_TO_STACK, "test.replyTo2"); Map<String, Object> headerMap = headerMapper.toHeadersFromReply(amqpProperties); assertEquals("test.appId", headerMap.get(AmqpHeaders.APP_ID));
@Override public Message postProcessMessageBeforeSend(Message message, Event event) { message.getMessageProperties().setHeader("foo", this.foo); return message; }
private org.springframework.amqp.core.Message createAmqpTextMessage(String payload) { MessageProperties properties = new MessageProperties(); properties.setHeader("foo", "bar"); return MessageTestUtils.createTextMessage(payload, properties); }
private boolean receiveAndReply() { return this.template.receiveAndReply((ReceiveAndReplyMessageCallback) message -> { message.getMessageProperties().setHeader("foo", "bar"); return message; }); }
@Test public void resolveHeaders() throws Exception { MessagingMessageListenerAdapter listener = createDefaultInstance(String.class, Map.class); Channel channel = mock(Channel.class); MessageProperties properties = new MessageProperties(); properties.setHeader("customInt", 1234); properties.setMessageId("abcd-1234"); org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage("my payload", properties); listener.onMessage(message, channel); assertDefaultListenerMethodInvocation(); }
@Test public void endpointWithComplexReply() { MessageProperties properties = new MessageProperties(); properties.setHeader("foo", "fooValue"); Message request = MessageTestUtils.createTextMessage("content", properties); Message reply = rabbitTemplate.sendAndReceive("test.reply", request); assertEquals("Wrong reply", "content", MessageTestUtils.extractText(reply)); assertEquals("Wrong foo header", "fooValue", reply.getMessageProperties().getHeaders().get("foo")); assertThat((String) reply.getMessageProperties().getHeaders().get("bar"), startsWith(tagPrefix)); }