MessageChannel 接口

Spring Integration 的顶级 `MessageChannel` 接口定义如下:

public interface MessageChannel {

    boolean send(Message message);

    boolean send(Message message, long timeout);
}

发送消息时,如果消息成功发送,则返回值为 `true`。如果发送调用超时或被中断,则返回 `false`。

PollableChannel

由于消息通道可能会也可能不会缓冲消息(如Spring Integration 概述中所述),因此两个子接口定义了缓冲(可轮询)和非缓冲(可订阅)通道行为。以下清单显示了 `PollableChannel` 接口的定义:

public interface PollableChannel extends MessageChannel {

    Message<?> receive();

    Message<?> receive(long timeout);

}

与发送方法一样,接收消息时,如果超时或中断,则返回值为 null。

SubscribableChannel

SubscribableChannel 基本接口由直接将其订阅的 `MessageHandler` 实例发送消息的通道实现。因此,它们不提供用于轮询的接收方法。相反,它们定义了用于管理这些订阅者的方法。以下清单显示了 `SubscribableChannel` 接口的定义:

public interface SubscribableChannel extends MessageChannel {

    boolean subscribe(MessageHandler handler);

    boolean unsubscribe(MessageHandler handler);

}