org.springframework.amqp.core.MessagePostProcessor Maven / Gradle / Ivy
/*
* Copyright 2002-2021 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.amqp.core;
import org.springframework.amqp.AmqpException;
/**
* Used in several places in the framework, such as
* {@code AmqpTemplate#convertAndSend(Object, MessagePostProcessor)} where it can be used
* to add/modify headers or properties after the message conversion has been performed. It
* also can be used to modify inbound messages when receiving messages in listener
* containers and {@code AmqpTemplate}s.
*
*
* It is a {@link FunctionalInterface} and is often used as a lambda:
*
* amqpTemplate.convertAndSend(routingKey, m -> {
* m.getMessageProperties().setDeliveryMode(DeliveryMode.NON_PERSISTENT);
* return m;
* });
*
*
* @author Mark Pollack
* @author Gary Russell
*/
@FunctionalInterface
public interface MessagePostProcessor {
/**
* Change (or replace) the message.
* @param message the message.
* @return the message.
* @throws AmqpException an exception.
*/
Message postProcessMessage(Message message) throws AmqpException;
/**
* Change (or replace) the message and/or change its correlation data. Only applies to
* outbound messages.
* @param message the message.
* @param correlation the correlation data.
* @return the message.
* @since 1.6.7
*/
default Message postProcessMessage(Message message, Correlation correlation) {
return postProcessMessage(message);
}
/**
* Change (or replace) the message and/or change its correlation data. Only applies to
* outbound messages.
* @param message the message.
* @param correlation the correlation data.
* @param exchange the exchange to which the message is to be sent.
* @param routingKey the routing key.
* @return the message.
* @since 2.3.4
*/
default Message postProcessMessage(Message message, Correlation correlation, String exchange, String routingKey) {
return postProcessMessage(message, correlation);
}
}