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);