Spring Integration支持多个渠道。
这些渠道之间有什么区别?
如果能回答真实的例子,将不胜感激。
答案 0 :(得分:3)
我们可以将DirectChannel
视为“完全没有渠道”。这只是满足管道和过滤器体系结构的一种便捷方法,但是它支持端点之间的内存中通信,并且更多地在同一线程中进行。另一方面,这是一个SubscribableChannel
,期望某些订阅者进行已发送的消息调度。当然,这只是实现细节,但要知道仍然很重要。还需要记住,在此通道中,生产者在发送过程中一直处于阻塞状态,直到消费者完成其工作并将管理返回给生产者调用者为止。
PolableChannel
是一个抽象。您需要研究QueueChannel
的实现。该通道的目的是区分不同线程中消息的发送者和接收者。该模型非常类似于Messaging Brokers实现中的模型:生产者发送消息而忘记了-在消息存储在队列中的同时,它准备做其他任何事情。消费者会定期轮询队列以查找新消息,并在方便消费者的情况下进行轮询,而不会影响生产者。
在现实世界中,我从未使用过内存QueueChannel
,而是基于某些持久性存储的变体,在某些情况下,当我们无法访问Message Broker时。
内存中的问题是,当应用程序意外崩溃时,您可能会丢失数据。