public MessageBuilderSupport<T> setCorrelationId(String correlationId) { this.properties.setCorrelationId(correlationId); return this; }
/** * {@inheritDoc} */ @Override public Message postProcessMessage(final Message message) throws AmqpException { if (message == null) { return message; } final MessageProperties messageProperties = message.getMessageProperties(); messageProperties.setTimestamp(this.properties.getTimestamp()); final byte[] correlationId = this.properties.getCorrelationId(); messageProperties.setCorrelationId(correlationId); messageProperties.setCorrelationIdString(this.properties.getCorrelationIdString()); messageProperties.setReplyTo(this.properties.getReplyTo()); messageProperties.setExpiration(this.properties.getExpiration()); return message; } }
amqpMessageProperties.setCorrelationId(correlationId);
/** * {@inheritDoc} */ @Override public Message postProcessMessage(final Message message) throws AmqpException { if (message == null) { return message; } final MessageProperties messageProperties = message.getMessageProperties(); messageProperties.setTimestamp(this.properties.getTimestamp()); final byte[] correlationId = this.properties.getCorrelationId(); messageProperties.setCorrelationId(correlationId); messageProperties.setCorrelationIdString(this.properties.getCorrelationIdString()); messageProperties.setReplyTo(this.properties.getReplyTo()); messageProperties.setExpiration(this.properties.getExpiration()); return message; } }
@Test public void toHeadersNonContenType() { DefaultAmqpHeaderMapper headerMapper = DefaultAmqpHeaderMapper.inboundMapper(); MessageProperties amqpProperties = new MessageProperties(); amqpProperties.setAppId("test.appId"); amqpProperties.setClusterId("test.clusterId"); amqpProperties.setContentType(null); String testCorrelationId = "foo"; amqpProperties.setCorrelationId(testCorrelationId); Map<String, Object> headerMap = headerMapper.toHeadersFromReply(amqpProperties); assertEquals(testCorrelationId, headerMap.get(AmqpHeaders.CORRELATION_ID)); }
public MessageBuilderSupport<T> setCorrelationIdIfAbsent(String correlationId) { if (this.properties.getCorrelationId() == null) { this.properties.setCorrelationId(correlationId); } return this; }
amqpProperties.setContentType("test.contentType"); String testCorrelationId = "foo"; amqpProperties.setCorrelationId(testCorrelationId); amqpProperties.setReceivedDeliveryMode(MessageDeliveryMode.NON_PERSISTENT); amqpProperties.setDeliveryTag(1234L);
@Override public void sendMessage(final Message message, final URI sendTo) { if (!IpUtil.isAmqpUri(sendTo)) { return; } final String exchange = sendTo.getPath().substring(1); final String correlationId = UUID.randomUUID().toString(); if (isCorrelationIdEmpty(message)) { message.getMessageProperties().setCorrelationId(correlationId); } if (LOGGER.isTraceEnabled()) { LOGGER.trace("Sending message {} to exchange {} with correlationId {}", message, exchange, correlationId); } else { LOGGER.debug("Sending message to exchange {} with correlationId {}", exchange, correlationId); } getRabbitTemplate().send(exchange, null, message, new CorrelationData(correlationId)); }
private String getOrSetCorrelationIdAndSetReplyTo(Message message) { String correlationId; MessageProperties messageProperties = message.getMessageProperties(); Assert.notNull(messageProperties, "the message properties cannot be null"); String currentCorrelationId = messageProperties.getCorrelationId(); if (!StringUtils.hasText(currentCorrelationId)) { correlationId = UUID.randomUUID().toString(); messageProperties.setCorrelationId(correlationId); Assert.isNull(messageProperties.getReplyTo(), "'replyTo' property must be null"); } else { correlationId = currentCorrelationId; } messageProperties.setReplyTo(this.replyAddress); return correlationId; }
private String getOrSetCorrelationIdAndSetReplyTo(Message message) { String correlationId; MessageProperties messageProperties = message.getMessageProperties(); Assert.notNull(messageProperties, "the message properties cannot be null"); String currentCorrelationId = messageProperties.getCorrelationId(); if (!StringUtils.hasText(currentCorrelationId)) { correlationId = UUID.randomUUID().toString(); messageProperties.setCorrelationId(correlationId); Assert.isNull(messageProperties.getReplyTo(), "'replyTo' property must be null"); } else { correlationId = currentCorrelationId; } messageProperties.setReplyTo(this.replyAddress); return correlationId; }
@Override public Message postProcessMessage(final Message message) { MessageProperties messageProperties = message.getMessageProperties(); String correlationId = messageProperties.getCorrelationId(); if (correlationId == null) { correlationId = (tracer!=null && tracer.currentSpan()!=null)? tracer.currentSpan().context().traceIdString():UUID.randomUUID().toString(); messageProperties.setCorrelationId(correlationId); } messageProperties.getHeaders().put("correlation-id", correlationId); return message; }
/** * Post-process the given response message before it will be sent. * <p> * The default implementation sets the response's correlation id to the request message's correlation id, if any; * otherwise to the request message id. * @param request the original incoming Rabbit message * @param response the outgoing Rabbit message about to be sent */ protected void postProcessResponse(Message request, Message response) { String correlation = request.getMessageProperties().getCorrelationId(); if (correlation == null) { String messageId = request.getMessageProperties().getMessageId(); if (messageId != null) { correlation = messageId; } } response.getMessageProperties().setCorrelationId(correlation); }
private void restoreProperties(Message message, PendingReply pendingReply) { if (!this.userCorrelationId) { // Restore the inbound correlation data String savedCorrelation = pendingReply.getSavedCorrelation(); if (this.correlationKey == null) { message.getMessageProperties().setCorrelationId(savedCorrelation); } else { if (savedCorrelation != null) { message.getMessageProperties().setHeader(this.correlationKey, savedCorrelation); } else { message.getMessageProperties().getHeaders().remove(this.correlationKey); } } } // Restore any inbound replyTo String savedReplyTo = pendingReply.getSavedReplyTo(); message.getMessageProperties().setReplyTo(savedReplyTo); if (logger.isDebugEnabled() && savedReplyTo != null) { logger.debug("Restored replyTo to " + savedReplyTo); } }
/** * Post-process the given response message before it will be sent. * <p> * The default implementation sets the response's correlation id to the request message's correlation id, if any; * otherwise to the request message id. * @param request the original incoming Rabbit message * @param response the outgoing Rabbit message about to be sent */ protected void postProcessResponse(Message request, Message response) { String correlation = request.getMessageProperties().getCorrelationId(); if (correlation == null) { String messageId = request.getMessageProperties().getMessageId(); if (messageId != null) { correlation = messageId; } } response.getMessageProperties().setCorrelationId(correlation); }
private void restoreProperties(Message message, PendingReply pendingReply) { if (!this.userCorrelationId) { // Restore the inbound correlation data String savedCorrelation = pendingReply.getSavedCorrelation(); if (this.correlationKey == null) { message.getMessageProperties().setCorrelationId(savedCorrelation); } else { if (savedCorrelation != null) { message.getMessageProperties().setHeader(this.correlationKey, savedCorrelation); } else { message.getMessageProperties().getHeaders().remove(this.correlationKey); } } } // Restore any inbound replyTo String savedReplyTo = pendingReply.getSavedReplyTo(); message.getMessageProperties().setReplyTo(savedReplyTo); if (logger.isDebugEnabled() && savedReplyTo != null) { logger.debug("Restored replyTo to " + savedReplyTo); } }
private Message getFooMessage() { this.fooMessage.getMessageProperties().setCorrelationId(null); this.fooMessage.getMessageProperties().setReplyTo(null); return this.fooMessage; }
@Override public CorrelationData postProcess(final Message message, CorrelationData correlationData) { CorrelationData resultCorrelationData = correlationData == null ? new CorrelationData() : correlationData; MessageProperties messageProperties = message.getMessageProperties(); if (correlationData != null && correlationData.getId() != null) { messageProperties.setCorrelationId(correlationData.getId()); } correlationPostProcessor.postProcessMessage(message); resultCorrelationData.setId(messageProperties.getCorrelationIdString()); return resultCorrelationData; }
private void send(Object object, Address replyToAddress, Message requestMessage) { Message message = this.messageConverter.toMessage(object, new MessageProperties()); message.getMessageProperties().setCorrelationId(requestMessage.getMessageProperties().getCorrelationId()); getAmqpTemplate().send(replyToAddress.getExchangeName(), replyToAddress.getRoutingKey(), message); }
@Test public void testMessageCustomCorrelation() throws Exception { Message message = getFooMessage(); message.getMessageProperties().setCorrelationId("foo"); ListenableFuture<Message> future = this.asyncTemplate.sendAndReceive(message); Message result = checkMessageResult(future, "FOO"); assertEquals("foo", result.getMessageProperties().getCorrelationId()); }
@Test public void processAndReply() throws Exception { MessagingMessageListenerAdapter listener = createDefaultInstance(String.class); String body = "echo text"; String correlationId = "link-1234"; String responseExchange = "fooQueue"; String responseRoutingKey = "abc-1234"; listener.setResponseExchange(responseExchange); listener.setResponseRoutingKey(responseRoutingKey); MessageProperties properties = new MessageProperties(); properties.setCorrelationId(correlationId); org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage(body, properties); processAndReply(listener, message, responseExchange, responseRoutingKey, false, correlationId); assertDefaultListenerMethodInvocation(); }