SEDA是“Staged Event Driven Architecture”的缩写,它被设计成一种机制来调节消息处理的不同阶段之间的流量。其想法是平滑整个过程中消息输出的频率,使其与输入相匹配。它允许一个端点的消费者线程将长时间运行的操作的工作转移到后台,从而释放它们以消耗传输的消息。
当交换机传递给端点时,它将被放置在BlockingQueue
中。列表存在于Camel上下文中,这意味着只有那些在同一上下文中的路由可以通过此类型的端点连接起来。该队列默认情况下是无界的,但可以通过在使用者URI上设置大小属性来更改。
默认情况下,分配给端点的单个线程会从列表中读取交换机并通过路由进行处理。如前面的示例所示,可以增加concurrenctConsumers
的数量,以确保及时处理列表中的交换机。
SEDA模式最适合处理InOnly
消息,其中一个路由完成处理并将其移交给另一个处理下一个阶段。当消息交换模式为InOut
时,可以通过调用端点请求响应。
参考文献: Apache Camel Developer's Cookbook
SEDA队列就像普通队列一样(正如Peter在上面所说,在Camel中,它们与线程池相关联,作为组件的一部分)。SEDA是一种架构。Camel中的SEDA组件使用进程内存储的队列,并且是一个单独的组件,以区别于Apache Camel中的其他队列组件,即JMS组件。