AMQP: Add bindSourceMessage property (inbound)

Resolves https://github.com/spring-projects/spring-integration/issues/2958
This commit is contained in:
Gary Russell
2019-06-10 17:20:31 -04:00
committed by Artem Bilan
parent 0addbe536b
commit 1067f91a8b
7 changed files with 73 additions and 7 deletions

View File

@@ -67,6 +67,11 @@ public class IntegrationMessageHeaderAccessor extends MessageHeaderAccessor {
public static final String ACKNOWLEDGMENT_CALLBACK = "acknowledgmentCallback";
/**
* Raw source message.
*/
public static final String SOURCE_DATA = "sourceData";
private static final BiFunction<String, String, String> TYPE_VERIFY_MESSAGE_FUNCTION =
(name, trailer) -> "The '" + name + trailer;
@@ -153,6 +158,18 @@ public class IntegrationMessageHeaderAccessor extends MessageHeaderAccessor {
return getHeader(DELIVERY_ATTEMPT, AtomicInteger.class);
}
/**
* Get the source data header, if present.
* @param <T> the data type.
* @return the source header.
* @since 5.1.6
*/
@SuppressWarnings("unchecked")
@Nullable
public <T> T getSourceData() {
return (T) getHeader(SOURCE_DATA);
}
@SuppressWarnings("unchecked")
@Nullable
public <T> T getHeader(String key, Class<T> type) {

View File

@@ -107,4 +107,10 @@ public final class StaticMessageHeaderAccessor {
AcknowledgmentCallback.class);
}
@SuppressWarnings("unchecked")
@Nullable
public static <T> T getSourceData(Message<?> message) {
return (T) message.getHeaders().get(IntegrationMessageHeaderAccessor.SOURCE_DATA);
}
}