gpt4 book ai didi

java - 普通队列与 SEDA 队列

转载 作者:搜寻专家 更新时间:2023-10-30 21:27:43 26 4
gpt4 key购买 nike

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

该页面对我来说意义不大,所以我在网上搜索了几个术语“SEDA 队列”并找到了维基百科文章 here .

读完那篇文章后,我无法分辨 SEDA 队列和正常的“普通”队列之间的区别!两者都通过使用异步队列来接受解耦系统的概念。

从这篇文章来看,“SEDA”听起来像是一种架构,其中包括在每个组件之间放置一个队列。这是正确的吗?

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

最佳答案

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

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

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

引用:Apache Camel 开发者指南

关于java - 普通队列与 SEDA 队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9161421/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com