作为Apache Camel的新手,我最近查看了它的长长的组件列表,偶然发现了它们对SEDA queue组件的支持。
这个页面对我来说没有多大意义,所以我在网上搜索了几次"SEDA queue“,得到了维基百科上的文章here。
读完那篇文章后,我不知道SEDA队列和普通的“普通”队列有什么不同!两者都包含通过使用异步队列来解耦系统的概念。
在这篇文章中,"SEDA“听起来就像是一个架构,它包含了在每个组件之间放置一个队列。这是正确的吗?
但是如果它只是一个架构,那么为什么"SEDA“队列是一个特殊的Apache Camel组件呢?
发布于 2012-02-06 22:18:23
SEDA队列就像一个普通的队列(正如Peter上面所说的,在Camel中,它们有一个线程池作为组件的一部分)。SEDA是一种架构。camel中的SEDA组件在您的进程中使用内存中的队列,并且是一个单独的组件,以便将它们与Apache Camel中的其他队列组件(即JMS组件)区分开来。
发布于 2016-09-14 13:38:11
SEDA是Staged Driven Architecture的缩写,它被设计为一种机制,用于调节消息处理的不同阶段之间的流。这个想法是为了平滑整个流程的消息输出频率,以便它与输入匹配,它允许enpoint的使用者线程将长时间运行的操作的工作卸载到后台,从而释放它们以从传输中消费消息。当交换传递到seda:终结点时,它被放入BlockingQueue中。该列表存在于驼峰上下文中,这意味着只有在相同上下文中的那些路由才能被这种类型的端点加入。默认情况下,队列是无边界的,尽管可以通过在使用者的URI上设置size属性来更改。
默认情况下,分配给终结点的单个线程读取列表中的交换并通过路由处理它们。如前面的示例所示,可以增加concurrenctConsumers的数量,以确保及时处理来自该列表的交换。
SEDA模式最适合处理InOnly消息,其中一个路由完成处理,然后切换到另一个路由来处理下一阶段。当消息交换模式为InOut时,可以通过调用它来请求来自seda:端点的响应。
参考:Apache Camel Developer的Cookbook
发布于 2013-06-03 10:39:08
SEDA提供了单个camel路由中组件的解耦。或者就这一点而言在单个进程中。。这意味着它可以帮助你对其他组件进行异步调用。它是内存中的阻塞队列。另一方面,JMS用于整个系统的解耦。JMS将有一个外部代理参与进来。SEDA将只创建一个独立于消费者组件的线程
https://stackoverflow.com/questions/9161421
复制相似问题