diff --git a/spring-integration-reference/src/core-api.xml b/spring-integration-reference/src/core-api.xml
index e809339f97..e316444796 100644
--- a/spring-integration-reference/src/core-api.xml
+++ b/spring-integration-reference/src/core-api.xml
@@ -31,7 +31,7 @@
ID
- java.lang.Object
+ java.util.UUID
TIMESTAMP
@@ -39,19 +39,15 @@
EXPIRATION_DATE
- java.util.Date
+ java.lang.Long
CORRELATION_ID
java.lang.Object
-
- NEXT_TARGET
- java.lang.Object (can be a String or MessageTarget)
-
RETURN_ADDRESS
- java.lang.Object (can be a String or MessageTarget)
+ java.lang.Object (can be a String or MessageChannel)
SEQUENCE_NUMBER
@@ -70,7 +66,7 @@
- Many source and target adapter implementations will also provide and/or expect certain headers, and additional
+ Many inbound/outbound adapter implementations will also provide and/or expect certain headers, and additional
user-defined headers can also be configured.
@@ -79,13 +75,13 @@
new GenericMessage<T>(T payload);
new GenericMessage<T>(T payload, Map<String, Object> headers)
When a Message is created, a random unique id will be generated. The constructor that accepts a Map of headers
- will copy the provided headers to the newly created Message. There are also two convenient subclasses available
- currently: StringMessage and ErrorMessage. The latter accepts any
+ will copy the provided headers to the newly created Message. There are also two convenient subclasses available:
+ StringMessage and ErrorMessage. The latter accepts any
Throwable object as its payload.
You may notice that the Message interface defines retrieval methods for its payload and headers but no setters.
- This is fully intentional so that each Message is unmodifiable after creation. Therefore, when a Message
+ The reason for this is that a Message cannot be modified after its initial creation. Therefore, when a Message
instance is sent to multiple consumers (e.g. through a Publish Subscribe Channel), if one of those consumers
needs to send a reply with a different payload type, it will need to create a new Message. As a result, the
other consumers are not affected by those changes. Keep in mind, that multiple consumers may access the same
@@ -156,10 +152,10 @@ assertEquals(MessagePriority.HIGHEST, anotherMessage.getHeaders().getPriority())
The Message is obviously a very important part of the API. By encapsulating the
data in a generic wrapper, the messaging system can pass it around without any knowledge of the data's type. As
- the system evolves to support new types, or when the types themselves are modified and/or extended, the messaging
- system will not be affected by such changes. On the other hand, when some component in the messaging system
- does require access to information about the Message, such
- metadata can typically be stored to and retrieved from the metadata in the Message Headers.
+ an application evolves to support new types, or when the types themselves are modified and/or extended, the
+ messaging system will not be affected by such changes. On the other hand, when some component in the messaging
+ system does require access to information about the Message,
+ such metadata can typically be stored to and retrieved from the metadata in the Message Headers.
@@ -221,8 +217,10 @@ target.send(new StringMessage("test"));
While the Message plays the crucial role of encapsulating data, it is the
MessageChannel that decouples message producers from message consumers.
Spring Integration's top-level MessageChannel interface is defined as follows.
-
Because it extends BlockingTarget, it inherits the following methods:
boolean send(Message message);