O'Reilly logo

Just Spring Integration by Madhusudhan Konda

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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 Message 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 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 ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required