首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >普通队列与SEDA队列

普通队列与SEDA队列
EN

Stack Overflow用户
提问于 2012-02-06 22:14:23
回答 3查看 13.3K关注 0票数 15

作为Apache Camel的新手,我最近查看了它的长长的组件列表,偶然发现了它们对SEDA queue组件的支持。

这个页面对我来说没有多大意义,所以我在网上搜索了几次"SEDA queue“,得到了维基百科上的文章here

读完那篇文章后,我不知道SEDA队列和普通的“普通”队列有什么不同!两者都包含通过使用异步队列来解耦系统的概念。

在这篇文章中,"SEDA“听起来就像是一个架构,它包含了在每个组件之间放置一个队列。这是正确的吗?

但是如果它只是一个架构,那么为什么"SEDA“队列是一个特殊的Apache Camel组件呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-06 22:18:23

SEDA队列就像一个普通的队列(正如Peter上面所说的,在Camel中,它们有一个线程池作为组件的一部分)。SEDA是一种架构。camel中的SEDA组件在您的进程中使用内存中的队列,并且是一个单独的组件,以便将它们与Apache Camel中的其他队列组件(即JMS组件)区分开来。

票数 8
EN

Stack Overflow用户

发布于 2016-09-14 13:38:11

SEDA是Staged Driven Architecture的缩写,它被设计为一种机制,用于调节消息处理的不同阶段之间的流。这个想法是为了平滑整个流程的消息输出频率,以便它与输入匹配,它允许enpoint的使用者线程将长时间运行的操作的工作卸载到后台,从而释放它们以从传输中消费消息。当交换传递到seda:终结点时,它被放入BlockingQueue中。该列表存在于驼峰上下文中,这意味着只有在相同上下文中的那些路由才能被这种类型的端点加入。默认情况下,队列是无边界的,尽管可以通过在使用者的URI上设置size属性来更改。

默认情况下,分配给终结点的单个线程读取列表中的交换并通过路由处理它们。如前面的示例所示,可以增加concurrenctConsumers的数量,以确保及时处理来自该列表的交换。

SEDA模式最适合处理InOnly消息,其中一个路由完成处理,然后切换到另一个路由来处理下一阶段。当消息交换模式为InOut时,可以通过调用它来请求来自seda:端点的响应。

参考:Apache Camel Developer的Cookbook

票数 11
EN

Stack Overflow用户

发布于 2013-06-03 10:39:08

SEDA提供了单个camel路由中组件的解耦。或者就这一点而言在单个进程中。。这意味着它可以帮助你对其他组件进行异步调用。它是内存中的阻塞队列。另一方面,JMS用于整个系统的解耦。JMS将有一个外部代理参与进来。SEDA将只创建一个独立于消费者组件的线程

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9161421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档