"RocketMQ Message hasn't been sent. Caused by " + e.getMessage()); if (getSendFailureChannel() != null) { getSendFailureChannel().send(this.errorMessageStrategy.buildErrorMessage( new RocketMQSendFailureException(message, toSend, e), null));
/** * Build an error message for the message and throwable using the configured * {@link ErrorMessageStrategy}. * @param requestMessage the requestMessage. * @param throwable the throwable. * @return the error message. * @since 4.3.10 */ protected final ErrorMessage buildErrorMessage(@Nullable Message<?> requestMessage, Throwable throwable) { return this.errorMessageStrategy.buildErrorMessage(throwable, getErrorMessageAttributes(requestMessage)); }
/** * Build an error message for the exception and message using the configured * {@link ErrorMessageStrategy}. * @param message the message. * @param exception the exception. * @return the error message. * @since 4.3.10 */ protected final ErrorMessage buildErrorMessage(Message<?> message, RuntimeException exception) { return this.errorMessageStrategy.buildErrorMessage(exception, getErrorMessageAttributes(message)); }
@Override public final void handleError(Throwable t) { MessageChannel errorChannel = resolveErrorChannel(t); boolean sent = false; if (errorChannel != null) { try { getMessagingTemplate().send(errorChannel, getErrorMessageStrategy().buildErrorMessage(t, null)); sent = true; } catch (Throwable errorDeliveryError) { //NOSONAR // message will be logged only if (this.logger.isWarnEnabled()) { this.logger.warn("Error message was not delivered.", errorDeliveryError); } if (errorDeliveryError instanceof Error) { throw ((Error) errorDeliveryError); } } } if (!sent && this.logger.isErrorEnabled()) { Message<?> failedMessage = (t instanceof MessagingException) ? ((MessagingException) t).getFailedMessage() : null; if (failedMessage != null) { this.logger.error("failure occurred in messaging task with message: " + failedMessage, t); } else { this.logger.error("failure occurred in messaging task", t); } } }
/** * Publish an error message for the supplied throwable and context. * The {@link #errorMessageStrategy} is used to build a {@link ErrorMessage} * to publish. * @param throwable the throwable. May be null. * @param context the context for {@link ErrorMessage} properties. */ public void publish(Throwable throwable, AttributeAccessor context) { populateChannel(); Throwable payload = determinePayload(throwable, context); ErrorMessage errorMessage = this.errorMessageStrategy.buildErrorMessage(payload, context); if (this.logger.isDebugEnabled() && payload instanceof MessagingException) { MessagingException exception = (MessagingException) errorMessage.getPayload(); this.logger.debug("Sending ErrorMessage: failedMessage: " + exception.getFailedMessage(), exception); } this.messagingTemplate.send(errorMessage); }
confirmMessage = this.errorMessageStrategy.buildErrorMessage( new NackedAmqpMessageException(wrapper.getMessage(), wrapper.getUserData(), cause), null);
/** * Build an error message for the exception and message using the configured * {@link ErrorMessageStrategy}. * @param message the message. * @param exception the exception. * @return the error message. * @since 4.3.10 */ protected final ErrorMessage buildErrorMessage(Message<?> message, RuntimeException exception) { return this.errorMessageStrategy.buildErrorMessage(exception, getErrorMessageAttributes(message)); }
protected Message<?> buildReturnedMessage(org.springframework.amqp.core.Message message, int replyCode, String replyText, String exchange, String routingKey, MessageConverter converter) { Object returnedObject = converter.fromMessage(message); AbstractIntegrationMessageBuilder<?> builder = (returnedObject instanceof Message) ? this.getMessageBuilderFactory().fromMessage((Message<?>) returnedObject) : this.getMessageBuilderFactory().withPayload(returnedObject); Map<String, ?> headers = getHeaderMapper().toHeadersFromReply(message.getMessageProperties()); if (this.errorMessageStrategy == null) { builder.copyHeadersIfAbsent(headers) .setHeader(AmqpHeaders.RETURN_REPLY_CODE, replyCode) .setHeader(AmqpHeaders.RETURN_REPLY_TEXT, replyText) .setHeader(AmqpHeaders.RETURN_EXCHANGE, exchange) .setHeader(AmqpHeaders.RETURN_ROUTING_KEY, routingKey); } Message<?> returnedMessage = builder.build(); if (this.errorMessageStrategy != null) { returnedMessage = this.errorMessageStrategy.buildErrorMessage(new ReturnedAmqpMessageException( returnedMessage, message, replyCode, replyText, exchange, routingKey), null); } return returnedMessage; }
/** * Build an error message for the message and throwable using the configured * {@link ErrorMessageStrategy}. * @param requestMessage the requestMessage. * @param throwable the throwable. * @return the error message. * @since 4.3.10 */ protected final ErrorMessage buildErrorMessage(@Nullable Message<?> requestMessage, Throwable throwable) { return this.errorMessageStrategy.buildErrorMessage(throwable, getErrorMessageAttributes(requestMessage)); }
@Override public final void handleError(Throwable t) { MessageChannel errorChannel = resolveErrorChannel(t); boolean sent = false; if (errorChannel != null) { try { getMessagingTemplate().send(errorChannel, getErrorMessageStrategy().buildErrorMessage(t, null)); sent = true; } catch (Throwable errorDeliveryError) { //NOSONAR // message will be logged only if (this.logger.isWarnEnabled()) { this.logger.warn("Error message was not delivered.", errorDeliveryError); } if (errorDeliveryError instanceof Error) { throw ((Error) errorDeliveryError); } } } if (!sent && this.logger.isErrorEnabled()) { Message<?> failedMessage = (t instanceof MessagingException) ? ((MessagingException) t).getFailedMessage() : null; if (failedMessage != null) { this.logger.error("failure occurred in messaging task with message: " + failedMessage, t); } else { this.logger.error("failure occurred in messaging task", t); } } }
@Override public void onFailure(Throwable ex) { if (getSendFailureChannel() != null) { KafkaProducerMessageHandler.this.messagingTemplate.send(getSendFailureChannel(), KafkaProducerMessageHandler.this.errorMessageStrategy.buildErrorMessage( new KafkaSendFailureException(message, producerRecord, ex), null)); } }
/** * Publish an error message for the supplied throwable and context. * The {@link #errorMessageStrategy} is used to build a {@link ErrorMessage} * to publish. * @param throwable the throwable. May be null. * @param context the context for {@link ErrorMessage} properties. */ public void publish(Throwable throwable, AttributeAccessor context) { populateChannel(); Throwable payload = determinePayload(throwable, context); ErrorMessage errorMessage = this.errorMessageStrategy.buildErrorMessage(payload, context); if (this.logger.isDebugEnabled() && payload instanceof MessagingException) { MessagingException exception = (MessagingException) errorMessage.getPayload(); this.logger.debug("Sending ErrorMessage: failedMessage: " + exception.getFailedMessage(), exception); } this.messagingTemplate.send(errorMessage); }
@Override public void onFailure(Throwable ex) { if (getSendFailureChannel() != null) { KafkaProducerMessageHandler.this.messagingTemplate.send(getSendFailureChannel(), KafkaProducerMessageHandler.this.errorMessageStrategy.buildErrorMessage( new KafkaSendFailureException(message, producerRecord, ex), null)); } }
confirmMessage = this.errorMessageStrategy.buildErrorMessage( new NackedAmqpMessageException(wrapper.getMessage(), wrapper.getUserData(), cause), null);
@Override public void onError(Exception ex) { if (getAsyncHandler() != null) { getAsyncHandler().onError(ex); } if (getFailureChannel() != null) { AbstractAwsMessageHandler.this.messagingTemplate.send(getFailureChannel(), getErrorMessageStrategy() .buildErrorMessage(new AwsRequestFailureException(message, request, ex), null)); } }
@Override public void onError(Exception ex) { if (getAsyncHandler() != null) { getAsyncHandler().onError(ex); } if (getFailureChannel() != null) { AbstractAwsMessageHandler.this.messagingTemplate.send(getFailureChannel(), getErrorMessageStrategy() .buildErrorMessage(new AwsRequestFailureException(message, request, ex), null)); } }
if (this.retryTemplate == null && !shouldRequeue(e)) { this.messagingTemplate .send(this.errorChannel, this.errorMessageStrategy.buildErrorMessage(e, attributesHolder.get())); return true;
protected Message<?> buildReturnedMessage(org.springframework.amqp.core.Message message, int replyCode, String replyText, String exchange, String routingKey, MessageConverter converter) { Object returnedObject = converter.fromMessage(message); AbstractIntegrationMessageBuilder<?> builder = (returnedObject instanceof Message) ? this.getMessageBuilderFactory().fromMessage((Message<?>) returnedObject) : this.getMessageBuilderFactory().withPayload(returnedObject); Map<String, ?> headers = getHeaderMapper().toHeadersFromReply(message.getMessageProperties()); if (this.errorMessageStrategy == null) { builder.copyHeadersIfAbsent(headers) .setHeader(AmqpHeaders.RETURN_REPLY_CODE, replyCode) .setHeader(AmqpHeaders.RETURN_REPLY_TEXT, replyText) .setHeader(AmqpHeaders.RETURN_EXCHANGE, exchange) .setHeader(AmqpHeaders.RETURN_ROUTING_KEY, routingKey); } Message<?> returnedMessage = builder.build(); if (this.errorMessageStrategy != null) { returnedMessage = this.errorMessageStrategy.buildErrorMessage(new ReturnedAmqpMessageException( returnedMessage, message, replyCode, replyText, exchange, routingKey), null); } return returnedMessage; }