void setConsumerSpan(Span span, MessageProperties properties) { span.name("next-message").kind(CONSUMER); maybeTag(span, RABBIT_EXCHANGE, properties.getReceivedExchange()); maybeTag(span, RABBIT_ROUTING_KEY, properties.getReceivedRoutingKey()); maybeTag(span, RABBIT_QUEUE, properties.getConsumerQueue()); if (remoteServiceName != null) span.remoteServiceName(remoteServiceName); }
headers.put(AmqpHeaders.RECEIVED_EXCHANGE, receivedExchange); String receivedRoutingKey = amqpMessageProperties.getReceivedRoutingKey(); if (StringUtils.hasText(receivedRoutingKey)) { headers.put(AmqpHeaders.RECEIVED_ROUTING_KEY, receivedRoutingKey);
/** * The event type ({@link MessageProperties#getReceivedRoutingKey()}). * @return the type. */ public String getEventType() { return this.properties.getReceivedRoutingKey(); }
/** * The event type ({@link MessageProperties#getReceivedRoutingKey()}). * @return the type. */ public String getEventType() { return this.properties.getReceivedRoutingKey(); }
assertEquals("test.messageId", amqpProperties.getMessageId()); assertEquals("test.receivedExchange", amqpProperties.getReceivedExchange()); assertEquals("test.receivedRoutingKey", amqpProperties.getReceivedRoutingKey()); assertEquals("test.replyTo", amqpProperties.getReplyTo()); assertEquals(testTimestamp, amqpProperties.getTimestamp());
public MessageBuilderSupport<T> setReceivedRoutingKeyIfAbsent(String receivedRoutingKey) { if (this.properties.getReceivedRoutingKey() == null) { this.properties.setReceivedRoutingKey(receivedRoutingKey); } return this; }
private String prefixedOriginalRoutingKey(Message message) { return this.errorRoutingKeyPrefix + message.getMessageProperties().getReceivedRoutingKey(); }
private String prefixedOriginalRoutingKey(Message message) { return this.errorRoutingKeyPrefix + message.getMessageProperties().getReceivedRoutingKey(); }
headers.put(X_EXCEPTION_MESSAGE, cause.getCause() != null ? cause.getCause().getMessage() : cause.getMessage()); headers.put(X_ORIGINAL_EXCHANGE, messageProperties.getReceivedExchange()); headers.put(X_ORIGINAL_ROUTING_KEY, messageProperties.getReceivedRoutingKey()); Map<? extends String, ? extends Object> additionalHeaders = additionalHeaders(message, cause); if (additionalHeaders != null) {
headers.put(X_EXCEPTION_MESSAGE, cause.getCause() != null ? cause.getCause().getMessage() : cause.getMessage()); headers.put(X_ORIGINAL_EXCHANGE, messageProperties.getReceivedExchange()); headers.put(X_ORIGINAL_ROUTING_KEY, messageProperties.getReceivedRoutingKey()); Map<? extends String, ? extends Object> additionalHeaders = additionalHeaders(message, cause); if (additionalHeaders != null) {
messageProperties.getReceivedExchange()); headers.put(RepublishMessageRecoverer.X_ORIGINAL_ROUTING_KEY, messageProperties.getReceivedRoutingKey()); if (properties.getExtension().getRepublishDeliveyMode() != null) { messageProperties.setDeliveryMode(properties.getExtension().getRepublishDeliveyMode());
messageProperties.getReceivedExchange()); headers.put(RepublishMessageRecoverer.X_ORIGINAL_ROUTING_KEY, messageProperties.getReceivedRoutingKey()); if (properties.getExtension().getRepublishDeliveyMode() != null) { messageProperties.setDeliveryMode(properties.getExtension().getRepublishDeliveyMode());
@Override public void recover(final Message message, final Throwable cause) { Map<String, Object> headers = message.getMessageProperties().getHeaders(); headers.put("x-exception-stacktrace", ExceptionUtils.getFullStackTrace(cause)); headers.put("x-exception-message", ExceptionUtils.getMessage(cause)); headers.put("x-exception-root-cause-message", ExceptionUtils.getRootCauseMessage(cause)); headers.put("x-original-exchange", message.getMessageProperties().getReceivedExchange()); headers.put("x-original-routingKey", message.getMessageProperties().getReceivedRoutingKey()); headers.put("x-original-queue", message.getMessageProperties().getConsumerQueue()); headers.put("x-recover-time", new Date().toString()); String deadLetterExchangeName = rabbitmqProperties.getDeadLetterConfig().getDeadLetterExchange().getName(); String deadLetterRoutingKey = rabbitmqProperties.getDeadLetterConfig().createDeadLetterQueueName(message.getMessageProperties().getConsumerQueue()); headers.put("x-dead-letter-exchange", deadLetterExchangeName); headers.put("x-dead-letter-queue", deadLetterRoutingKey); if(headers.containsKey("correlation-id")) { message.getMessageProperties().setCorrelationIdString((String) headers.get("correlation-id")); } headers.putAll(loadAdditionalHeaders(message, cause)); for (MessageExceptionHandler messageExceptionHandler : messageExceptionHandlers) { try { messageExceptionHandler.handle(message, cause); } catch (Exception e) { // To catch any exception in the MessageExceptionHandler to avoid the interruption in other MessageExceptionHandlers log.error("Exception occurred while processing '{}' message exception handler.", messageExceptionHandler, e); } } this.errorTemplate.send(deadLetterExchangeName, deadLetterRoutingKey, message); log.warn("Republishing failed message to exchange '{}', routing key '{}', message {{}} , cause {}", deadLetterExchangeName, deadLetterRoutingKey, message, cause); }
void onReceive(MessageProperties messageProperties, Span span) { Tags.COMPONENT.set(span, RabbitMqTracingTags.RABBITMQ); RabbitMqTracingTags.EXCHANGE.set(span, messageProperties.getReceivedExchange()); RabbitMqTracingTags.MESSAGE_ID.set(span, messageProperties.getMessageId()); RabbitMqTracingTags.ROUTING_KEY.set(span, messageProperties.getReceivedRoutingKey()); RabbitMqTracingTags.CONSUMER_QUEUE.set(span, messageProperties.getConsumerQueue()); }
assertEquals("test.messageId", amqpProperties.getMessageId()); assertEquals("test.receivedExchange", amqpProperties.getReceivedExchange()); assertEquals("test.receivedRoutingKey", amqpProperties.getReceivedRoutingKey()); assertEquals("test.replyTo", amqpProperties.getReplyTo()); assertEquals(testTimestamp, amqpProperties.getTimestamp());
throw new IllegalStateException("No message converter present - cannot processs messages!"); LOG.debug("Received message for routing key {}", amqpMessage.getMessageProperties().getReceivedRoutingKey()); ExchangePattern exchangePattern = SpringAMQPMessage.getExchangePattern(amqpMessage); Exchange exchange = new DefaultExchange(endpoint, exchangePattern);
throw new IllegalStateException("No message converter present - cannot processs messages!"); LOG.debug("Received message for routing key {}", amqpMessage.getMessageProperties().getReceivedRoutingKey()); ExchangePattern exchangePattern = SpringAMQPMessage.getExchangePattern(amqpMessage); Exchange exchange = new DefaultExchange(endpoint, exchangePattern);
@Test public void test() { CachingConnectionFactory ccf = new CachingConnectionFactory("localhost"); RabbitTemplate template = new RabbitTemplate(ccf); RabbitAdmin admin = new RabbitAdmin(ccf); FanoutExchange fanout = new FanoutExchange("log4j2Test"); admin.declareExchange(fanout); Queue queue = new Queue("log4j2Test"); admin.declareQueue(queue); admin.declareBinding(BindingBuilder.bind(queue).to(fanout)); Logger logger = LogManager.getLogger("foo"); logger.info("foo"); logger.info("bar"); template.setReceiveTimeout(10000); Message received = template.receive(queue.getName()); assertNotNull(received); assertEquals("testAppId.foo.INFO", received.getMessageProperties().getReceivedRoutingKey()); // Cross-platform string comparison. Windows expects \n\r in the end of line assertThat(new String(received.getBody()), startsWith("foo")); received = template.receive(queue.getName()); assertNotNull(received); assertEquals("testAppId.foo.INFO", received.getMessageProperties().getReceivedRoutingKey()); assertThat(new String(received.getBody()), startsWith("bar")); Object threadName = received.getMessageProperties().getHeaders().get("thread"); assertNotNull(threadName); assertThat(threadName, instanceOf(String.class)); assertThat(threadName, is(Thread.currentThread().getName())); }
private void assertLower(MessageProperties properties) { assertEquals("appId", properties.getAppId()); assertEquals("clusterId", properties.getClusterId()); assertEquals("contentEncoding", properties.getContentEncoding()); assertEquals(MessageProperties.CONTENT_TYPE_TEXT_PLAIN, properties.getContentType()); assertEquals(1, properties.getContentLength()); assertEquals("correlationId", properties.getCorrelationId()); assertEquals(MessageDeliveryMode.NON_PERSISTENT, properties.getDeliveryMode()); assertEquals(2, properties.getDeliveryTag()); assertEquals("expiration", properties.getExpiration()); assertEquals("bar", properties.getHeaders().get("foo")); assertEquals("fiz", properties.getHeaders().get("qux")); assertEquals("fuz", properties.getHeaders().get("baz")); assertEquals(Integer.valueOf(3), properties.getMessageCount()); assertEquals("messageId", properties.getMessageId()); assertEquals(Integer.valueOf(4), properties.getPriority()); assertEquals("receivedExchange", properties.getReceivedExchange()); assertEquals("receivedRoutingKey", properties.getReceivedRoutingKey()); assertTrue(properties.getRedelivered()); assertTrue(properties.getTimestamp().getTime() > 0); assertEquals("type", properties.getType()); assertEquals("userId", properties.getUserId()); }
private void assertUpper(MessageProperties properties) { assertEquals("APPID", properties.getAppId()); assertEquals("CLUSTERID", properties.getClusterId()); assertEquals("CONTENTENCODING", properties.getContentEncoding()); assertEquals(MessageProperties.CONTENT_TYPE_BYTES, properties.getContentType()); assertEquals(10, properties.getContentLength()); assertEquals("CORRELATIONID", properties.getCorrelationId()); assertEquals(MessageDeliveryMode.PERSISTENT, properties.getDeliveryMode()); assertEquals(20, properties.getDeliveryTag()); assertEquals("EXPIRATION", properties.getExpiration()); assertEquals("BAR", properties.getHeaders().get("foo")); assertEquals("FIZ", properties.getHeaders().get("qux")); assertEquals("FUZ", properties.getHeaders().get("baz")); assertEquals(Integer.valueOf(30), properties.getMessageCount()); assertEquals("MESSAGEID", properties.getMessageId()); assertEquals(Integer.valueOf(40), properties.getPriority()); assertEquals("RECEIVEDEXCHANGE", properties.getReceivedExchange()); assertEquals("RECEIVEDROUTINGKEY", properties.getReceivedRoutingKey()); assertFalse(properties.getRedelivered()); assertTrue(properties.getTimestamp().getTime() == 0); assertEquals("TYPE", properties.getType()); assertEquals("USERID", properties.getUserId()); }