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 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access