Codota Logo
RepublishMessageRecoverer
Code IndexAdd Codota to your IDE (free)

How to use
RepublishMessageRecoverer
in
org.springframework.amqp.rabbit.retry

Best Java code snippets using org.springframework.amqp.rabbit.retry.RepublishMessageRecoverer (Showing top 17 results out of 315)

  • Add the Codota plugin to your IDE and get smart completions
private void myMethod () {
Charset c =
  • Codota IconString charsetName;Charset.forName(charsetName)
  • Codota IconCharset.defaultCharset()
  • Codota IconContentType contentType;contentType.getCharset()
  • Smart code suggestions by Codota
}
origin: spring-projects/spring-amqp

private String processStackTrace(Throwable cause) {
  String stackTraceAsString = getStackTraceAsString(cause);
  if (this.maxStackTraceLength < 0) {
    int maxStackTraceLen = RabbitUtils
        .getMaxFrame(((RabbitTemplate) this.errorTemplate).getConnectionFactory());
    if (maxStackTraceLen > 0) {
      maxStackTraceLen -= this.frameMaxHeadroom;
      this.maxStackTraceLength = maxStackTraceLen;
    }
  }
  if (this.maxStackTraceLength > 0 && stackTraceAsString.length() > this.maxStackTraceLength) {
    stackTraceAsString = stackTraceAsString.substring(0, this.maxStackTraceLength);
    this.logger.warn("Stack trace in republished message header truncated due to frame_max limitations; "
        + "consider increasing frame_max on the broker or reduce the stack trace depth", cause);
  }
  return stackTraceAsString;
}
origin: spring-projects/spring-amqp

/**
 * Apply a prefix to the outbound routing key, which will be prefixed to the original message
 * routing key (if no explicit routing key was provided in the constructor; ignored otherwise.
 * Use an empty string ("") for no prefixing.
 * @param errorRoutingKeyPrefix The prefix (default "error.").
 * @return this.
 */
public RepublishMessageRecoverer errorRoutingKeyPrefix(String errorRoutingKeyPrefix) {
  this.setErrorRoutingKeyPrefix(errorRoutingKeyPrefix);
  return this;
}
origin: spring-projects/spring-amqp

MessageProperties messageProperties = message.getMessageProperties();
Map<String, Object> headers = messageProperties.getHeaders();
String stackTraceAsString = processStackTrace(cause);
headers.put(X_EXCEPTION_STACKTRACE, stackTraceAsString);
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.putAll(additionalHeaders);
      : this.prefixedOriginalRoutingKey(message);
  this.errorTemplate.send(this.errorExchangeName, routingKey, message);
  if (this.logger.isWarnEnabled()) {
  final String routingKey = this.prefixedOriginalRoutingKey(message);
  this.errorTemplate.send(routingKey, message);
  if (this.logger.isWarnEnabled()) {
origin: spring-projects/spring-amqp

@Test
public void shouldPublishWithRoutingKeyPrefixedWithErrorWhenExchangeIsNotSet() {
  recoverer = new RepublishMessageRecoverer(amqpTemplate);
  recoverer.recover(message, cause);
  verify(amqpTemplate).send("error.some.key", message);
}
origin: spring-projects/spring-amqp

@Test
public void setDeliveryModeIfNull() {
  this.message.getMessageProperties().setDeliveryMode(null);
  this.recoverer = new RepublishMessageRecoverer(amqpTemplate, "error");
  this.recoverer.setDeliveryMode(MessageDeliveryMode.NON_PERSISTENT);
  recoverer.recover(this.message, this.cause);
  assertEquals(MessageDeliveryMode.NON_PERSISTENT, this.message.getMessageProperties().getDeliveryMode());
}
origin: spring-projects/spring-amqp

@Test
public void testWithRepublishRecovererCustomExchangeAndDefaultRoutingCustomPrefix() throws Throwable {
  AmqpTemplate amqpTemplate = mock(AmqpTemplate.class);
  RetryOperationsInterceptor interceptor = RetryInterceptorBuilder.stateless()
      .recoverer(new RepublishMessageRecoverer(amqpTemplate, "baz").errorRoutingKeyPrefix("bar."))
      .build();
  final AtomicInteger count = new AtomicInteger();
  Foo delegate = createDelegate(interceptor, count);
  Message message = MessageBuilder.withBody("".getBytes()).setReceivedRoutingKey("foo").build();
  delegate.onMessage("", message);
  assertEquals(3, count.get());
  verify(amqpTemplate).send("baz", "bar.foo", message);
}
origin: spring-projects/spring-amqp

@Test
public void testWithRepublishRecovererExplicitExchangeAndRouting() throws Throwable {
  AmqpTemplate amqpTemplate = mock(AmqpTemplate.class);
  RetryOperationsInterceptor interceptor = RetryInterceptorBuilder.stateless()
      .recoverer(new RepublishMessageRecoverer(amqpTemplate, "bar", "baz"))
      .build();
  final AtomicInteger count = new AtomicInteger();
  Foo delegate = createDelegate(interceptor, count);
  Message message = MessageBuilder.withBody("".getBytes()).build();
  delegate.onMessage("", message);
  assertEquals(3, count.get());
  verify(amqpTemplate).send("bar", "baz", message);
}
origin: spring-projects/spring-amqp

@Test
public void shouldRemapDeliveryMode() {
  message.getMessageProperties().setDeliveryMode(null);
  message.getMessageProperties().setReceivedDeliveryMode(MessageDeliveryMode.PERSISTENT);
  recoverer = new RepublishMessageRecoverer(amqpTemplate, "error") {
    protected Map<? extends String, ? extends Object> additionalHeaders(Message message, Throwable cause) {
      message.getMessageProperties().setDeliveryMode(message.getMessageProperties().getReceivedDeliveryMode());
      return null;
    }
  };
  recoverer.recover(message, cause);
  assertEquals(MessageDeliveryMode.PERSISTENT, message.getMessageProperties().getDeliveryMode());
}
origin: org.springframework.amqp/spring-rabbit

MessageProperties messageProperties = message.getMessageProperties();
Map<String, Object> headers = messageProperties.getHeaders();
String stackTraceAsString = processStackTrace(cause);
headers.put(X_EXCEPTION_STACKTRACE, stackTraceAsString);
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.putAll(additionalHeaders);
      : this.prefixedOriginalRoutingKey(message);
  this.errorTemplate.send(this.errorExchangeName, routingKey, message);
  if (this.logger.isWarnEnabled()) {
  final String routingKey = this.prefixedOriginalRoutingKey(message);
  this.errorTemplate.send(routingKey, message);
  if (this.logger.isWarnEnabled()) {
origin: spring-projects/spring-amqp

@Test
public void shouldPublishWithSetErrorRoutingKeyWhenExchangeAndErrorRoutingKeyProvided() {
  recoverer = new RepublishMessageRecoverer(amqpTemplate, "errorExchange", "errorRoutingKey");
  recoverer.recover(message, cause);
  verify(amqpTemplate).send("errorExchange", "errorRoutingKey", message);
}
origin: spring-projects/spring-amqp

@Test
public void testWithRepublishRecovererDefaultExchangeAndRoutingCustomPrefix() throws Throwable {
  AmqpTemplate amqpTemplate = mock(AmqpTemplate.class);
  RetryOperationsInterceptor interceptor = RetryInterceptorBuilder.stateless()
      .recoverer(new RepublishMessageRecoverer(amqpTemplate).errorRoutingKeyPrefix("bar."))
      .build();
  final AtomicInteger count = new AtomicInteger();
  Foo delegate = createDelegate(interceptor, count);
  Message message = MessageBuilder.withBody("".getBytes()).setReceivedRoutingKey("foo").build();
  delegate.onMessage("", message);
  assertEquals(3, count.get());
  verify(amqpTemplate).send("bar.foo", message);
}
origin: spring-projects/spring-amqp

@Test
public void shouldPublishToProvidedExchange() {
  recoverer = new RepublishMessageRecoverer(amqpTemplate, "error");
  recoverer.recover(message, cause);
  verify(amqpTemplate).send("error", "error.some.key", message);
}
origin: org.springframework.amqp/spring-rabbit

/**
 * Apply a prefix to the outbound routing key, which will be prefixed to the original message
 * routing key (if no explicit routing key was provided in the constructor; ignored otherwise.
 * Use an empty string ("") for no prefixing.
 * @param errorRoutingKeyPrefix The prefix (default "error.").
 * @return this.
 */
public RepublishMessageRecoverer errorRoutingKeyPrefix(String errorRoutingKeyPrefix) {
  this.setErrorRoutingKeyPrefix(errorRoutingKeyPrefix);
  return this;
}
origin: org.springframework.amqp/spring-rabbit

private String processStackTrace(Throwable cause) {
  String stackTraceAsString = getStackTraceAsString(cause);
  if (this.maxStackTraceLength < 0) {
    int maxStackTraceLen = RabbitUtils
        .getMaxFrame(((RabbitTemplate) this.errorTemplate).getConnectionFactory());
    if (maxStackTraceLen > 0) {
      maxStackTraceLen -= this.frameMaxHeadroom;
      this.maxStackTraceLength = maxStackTraceLen;
    }
  }
  if (this.maxStackTraceLength > 0 && stackTraceAsString.length() > this.maxStackTraceLength) {
    stackTraceAsString = stackTraceAsString.substring(0, this.maxStackTraceLength);
    this.logger.warn("Stack trace in republished message header truncated due to frame_max limitations; "
        + "consider increasing frame_max on the broker or reduce the stack trace depth", cause);
  }
  return stackTraceAsString;
}
origin: spring-projects/spring-amqp

@Test
public void shouldIncludeTheStacktraceInTheHeaderOfThePublishedMessage() {
  recoverer = new RepublishMessageRecoverer(amqpTemplate);
  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  cause.printStackTrace(new PrintStream(baos));
  final String expectedHeaderValue = baos.toString();
  recoverer.recover(message, cause);
  assertEquals(expectedHeaderValue, message.getMessageProperties().getHeaders().get("x-exception-stacktrace"));
}
origin: spring-projects/spring-amqp

@Test
public void shouldIncludeTheCauseMessageInTheHeaderOfThePublishedMessage() {
  recoverer = new RepublishMessageRecoverer(amqpTemplate);
  recoverer.recover(message, cause);
  assertEquals(cause.getCause().getMessage(),
      message.getMessageProperties().getHeaders().get("x-exception-message"));
}
origin: spring-projects/spring-amqp

@Test
public void shouldSetTheOriginalMessageExchangeOnInTheHeaders() {
  message.getMessageProperties().setReceivedExchange("the.original.exchange");
  recoverer = new RepublishMessageRecoverer(amqpTemplate, "error");
  recoverer.recover(message, cause);
  assertEquals("the.original.exchange",
      message.getMessageProperties().getHeaders().get("x-original-exchange"));
}
org.springframework.amqp.rabbit.retryRepublishMessageRecoverer

Javadoc

MessageRecoverer implementation that republishes recovered messages to a specified exchange with the exception stack trace stored in the message header x-exception.

If no routing key is provided, the original routing key for the message, prefixed with #setErrorRoutingKeyPrefix(String) (default "error.") will be used to publish the message to the exchange provided in name, or the template's default exchange if none is set.

Most used methods

  • additionalHeaders
    Subclasses can override this method to add more headers to the republished message.
  • getStackTraceAsString
  • prefixedOriginalRoutingKey
  • processStackTrace
  • setErrorRoutingKeyPrefix
  • <init>
  • errorRoutingKeyPrefix
    Apply a prefix to the outbound routing key, which will be prefixed to the original message routing k
  • recover
  • setDeliveryMode
    Specify a MessageDeliveryMode to set into the message to republish if the message doesn't have it al

Popular in Java

  • Making http post requests using okhttp
  • startActivity (Activity)
  • notifyDataSetChanged (ArrayAdapter)
  • getSharedPreferences (Context)
  • Component (java.awt)
    A component is an object having a graphical representation that can be displayed on the screen and t
  • Window (java.awt)
    A Window object is a top-level window with no borders and no menubar. The default layout for a windo
  • BufferedInputStream (java.io)
    Wraps an existing InputStream and buffers the input. Expensive interaction with the underlying input
  • FileWriter (java.io)
    Convenience class for writing character files. The constructors of this class assume that the defaul
  • ByteBuffer (java.nio)
    A buffer for bytes. A byte buffer can be created in either one of the following ways: * #allocate(i
  • Scanner (java.util)
    A parser that parses a text string of primitive types and strings with the help of regular expressio
Codota Logo
  • Products

    Search for Java codeSearch for JavaScript codeEnterprise
  • IDE Plugins

    IntelliJ IDEAWebStormAndroid StudioEclipseVisual Studio CodePyCharmSublime TextPhpStormVimAtomGoLandRubyMineEmacsJupyter
  • Company

    About UsContact UsCareers
  • Resources

    FAQBlogCodota Academy Plugin user guide Terms of usePrivacy policyJava Code IndexJavascript Code Index
Get Codota for your IDE now