Message Channels
We have seen in the previous chapter that the MessageChannel
interface has methods to send
data using a Message
object.
boolean send(Message message); boolean send(Message message, long timeout)
Both the methods
above will take the
as a parameter. The first
method publishes the message but does not return control until it
successfully executes the sending operation. This is not desirable due to
wastage of CPU cycles. In this situation, the second Message
send
method takes over. When the message is not
delivered for whatever reason after a predefined time, the second method
steps in and throws an exception.
Note the return value of these methods, boolean
,
indicates the success or failure of the message delivery.
The timeout variable can be set to zero, positive, or negative values.
If the timeout variable is negative, the thread will block
indefinitely until it is able to publish the message successfully. If it
is set to zero, the send
method will
return instantly, whether the sending was successful or not. If it is
greater than zero, the sending thread will honor that amount of time
before throwing an error if it is unable to push the message to the
channel.
The interesting point is that the MessageChannel
interface does not define any
methods for receiving messages. Receiving a message largely depends on the
receiver’s semantics: Point-to-Point (P2P) or
Publish/Subscribe (Pub/Sub).
In a P2P
mode, only one receiver will get the message delivered, even if multiple receivers ...
Get Just Spring Integration now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.