PollableChannel和DirectChannel有什么区别?

时间:2018-08-07 12:59:34

标签: java spring spring-integration

Spring Integration支持多个渠道。

这些渠道之间有什么区别?

如果能回答真实的例子,将不胜感激。

1 个答案:

答案 0 :(得分:3)

我们可以将DirectChannel视为“完全没有渠道”。这只是满足管道和过滤器体系结构的一种便捷方法,但是它支持端点之间的内存中通信,并且更多地在同一线程中进行。另一方面,这是一个SubscribableChannel,期望某些订阅者进行已发送的消息调度。当然,这只是实现细节,但要知道仍然很重要。还需要记住,在此通道中,生产者在发送过程中一直处于阻塞状态,直到消费者完成其工作并将管理返回给生产者调用者为止。

PolableChannel是一个抽象。您需要研究QueueChannel的实现。该通道的目的是区分不同线程中消息的发送者和接收者。该模型非常类似于Messaging Brokers实现中的模型:生产者发送消息而忘记了-在消息存储在队列中的同时,它准备做其他任何事情。消费者会定期轮询队列以查找新消息,并在方便消费者的情况下进行轮询,而不会影响生产者。

在现实世界中,我从未使用过内存QueueChannel,而是基于某些持久性存储的变体,在某些情况下,当我们无法访问Message Broker时。 内存中的问题是,当应用程序意外崩溃时,您可能会丢失数据。