public final class MutableMessageBuilder<T> extends AbstractIntegrationMessageBuilder<T>
IMPORTANT: Mutable messages may share state (such as message headers); such messages should never be exposed to other components or undesirable side-effects may result.
It is generally recommended that messages transferred between components should always be immutable unless great care is taken with their use.
Modifier and Type | Method and Description |
---|---|
org.springframework.messaging.Message<T> |
build() |
AbstractIntegrationMessageBuilder<T> |
copyHeaders(java.util.Map<java.lang.String,?> headersToCopy)
Copy the name-value pairs from the provided Map.
|
AbstractIntegrationMessageBuilder<T> |
copyHeadersIfAbsent(java.util.Map<java.lang.String,?> headersToCopy)
Copy the name-value pairs from the provided Map.
|
static <T> MutableMessageBuilder<T> |
fromMessage(org.springframework.messaging.Message<T> message)
Create a builder for a new
Message instance pre-populated with all of the headers copied from the
provided message. |
protected java.lang.Object |
getCorrelationId() |
java.util.Map<java.lang.String,java.lang.Object> |
getHeaders() |
T |
getPayload() |
protected java.util.List<java.util.List<java.lang.Object>> |
getSequenceDetails() |
protected java.lang.Object |
getSequenceNumber() |
protected java.lang.Object |
getSequenceSize() |
AbstractIntegrationMessageBuilder<T> |
removeHeader(java.lang.String headerName)
Remove the value for the given header name.
|
AbstractIntegrationMessageBuilder<T> |
removeHeaders(java.lang.String... headerPatterns)
Removes all headers provided via array of 'headerPatterns'.
|
AbstractIntegrationMessageBuilder<T> |
setHeader(java.lang.String headerName,
java.lang.Object headerValue)
Set the value for the given header name.
|
AbstractIntegrationMessageBuilder<T> |
setHeaderIfAbsent(java.lang.String headerName,
java.lang.Object headerValue)
Set the value for the given header name only if the header name is not already associated with a value.
|
static <T> MutableMessageBuilder<T> |
withPayload(T payload)
Create a builder for a new
Message instance with the provided payload. |
static <T> MutableMessageBuilder<T> |
withPayload(T payload,
boolean generateHeaders)
Create a builder for a new
Message instance with the provided payload. |
filterAndCopyHeadersIfAbsent, popSequenceDetails, pushSequenceDetails, setCorrelationId, setErrorChannel, setErrorChannelName, setExpirationDate, setExpirationDate, setPriority, setReplyChannel, setReplyChannelName, setSequenceNumber, setSequenceSize
public T getPayload()
getPayload
in class AbstractIntegrationMessageBuilder<T>
public java.util.Map<java.lang.String,java.lang.Object> getHeaders()
getHeaders
in class AbstractIntegrationMessageBuilder<T>
public static <T> MutableMessageBuilder<T> withPayload(T payload)
Message
instance with the provided payload.T
- The type of the payload.payload
- the payload for the new messagepublic static <T> MutableMessageBuilder<T> withPayload(T payload, boolean generateHeaders)
Message
instance with the provided payload.
The generateHeaders
flag allows to disable MessageHeaders.ID
and MessageHeaders.TIMESTAMP
headers generation.T
- The type of the payload.payload
- the payload for the new messagegenerateHeaders
- whether generate MessageHeaders.ID
and MessageHeaders.TIMESTAMP
headerspublic static <T> MutableMessageBuilder<T> fromMessage(org.springframework.messaging.Message<T> message)
Message
instance pre-populated with all of the headers copied from the
provided message. The payload of the provided Message will also be used as the payload for the new message.T
- The type of the payload.message
- the Message from which the payload and all headers will be copiedpublic AbstractIntegrationMessageBuilder<T> setHeader(java.lang.String headerName, @Nullable java.lang.Object headerValue)
AbstractIntegrationMessageBuilder
null
, the header will be removed.setHeader
in class AbstractIntegrationMessageBuilder<T>
headerName
- The header name.headerValue
- The header value.public AbstractIntegrationMessageBuilder<T> setHeaderIfAbsent(java.lang.String headerName, java.lang.Object headerValue)
AbstractIntegrationMessageBuilder
setHeaderIfAbsent
in class AbstractIntegrationMessageBuilder<T>
headerName
- The header name.headerValue
- The header value.public AbstractIntegrationMessageBuilder<T> removeHeaders(java.lang.String... headerPatterns)
AbstractIntegrationMessageBuilder
removeHeaders
in class AbstractIntegrationMessageBuilder<T>
headerPatterns
- The header patterns.public AbstractIntegrationMessageBuilder<T> removeHeader(java.lang.String headerName)
AbstractIntegrationMessageBuilder
removeHeader
in class AbstractIntegrationMessageBuilder<T>
headerName
- The header name.public AbstractIntegrationMessageBuilder<T> copyHeaders(@Nullable java.util.Map<java.lang.String,?> headersToCopy)
AbstractIntegrationMessageBuilder
AbstractIntegrationMessageBuilder.copyHeadersIfAbsent(Map)
to avoid overwriting values. Note that the 'id' and 'timestamp' header values
will never be overwritten.copyHeaders
in class AbstractIntegrationMessageBuilder<T>
headersToCopy
- The headers to copy.MessageHeaders.ID
,
MessageHeaders.TIMESTAMP
public AbstractIntegrationMessageBuilder<T> copyHeadersIfAbsent(@Nullable java.util.Map<java.lang.String,?> headersToCopy)
AbstractIntegrationMessageBuilder
copyHeadersIfAbsent
in class AbstractIntegrationMessageBuilder<T>
headersToCopy
- The headers to copy.protected java.util.List<java.util.List<java.lang.Object>> getSequenceDetails()
getSequenceDetails
in class AbstractIntegrationMessageBuilder<T>
protected java.lang.Object getCorrelationId()
getCorrelationId
in class AbstractIntegrationMessageBuilder<T>
protected java.lang.Object getSequenceNumber()
getSequenceNumber
in class AbstractIntegrationMessageBuilder<T>
protected java.lang.Object getSequenceSize()
getSequenceSize
in class AbstractIntegrationMessageBuilder<T>
public org.springframework.messaging.Message<T> build()
build
in class AbstractIntegrationMessageBuilder<T>