In Spring integration, message channels are used to transfer message from one endpoint to other endpoint. Producers send message to a channel and consumers receive messages from a channel.
By combining multiple
endpoints and channels we can form a complex workflow.
In spring integration, MessageChannel interface is defined like below.
@FunctionalInterface
public interface MessageChannel {
long INDEFINITE_TIMEOUT = -1;
default boolean send(Message<?> message) {
return send(message, INDEFINITE_TIMEOUT);
}
boolean send(Message<?> message, long timeout);
}
‘send’ method return true if the message sent successfully, else false.
Buffering messages
Spring integration provides a ‘PollableChannel’ interface to buffer the messages.
public interface PollableChannel extends MessageChannel {
@Nullable
Message<?> receive();
@Nullable
Message<?> receive(long timeout);
}
Return value of ‘receive’ method is null in the case of a timeout or interrupt.
SubscribableChannel interface
Spring integration provides ‘SubscribableChannel’ interface to support pub-sub model. SubscribableChannel maintains a registry of subscribers and invokes them to handle messages sent through this channel.
public interface SubscribableChannel extends MessageChannel {
boolean subscribe(MessageHandler handler);
boolean unsubscribe(MessageHandler handler);
}
Previous Next Home
No comments:
Post a Comment