回归基础:Apache Camel 路由和直接组件

2023-12-03

我对骆驼路线及其两个端点有点困惑:Direct 和 Seda。好吧,假设我有一条这样的路线:

public void configure()
{
 from("direct:services")
  .process(//Some processing here)
  .to("http://ThirdPartyServers")
}

除此之外,我有一个休息 Web 服务,它接收多个请求,进行一些处理,然后将消息移交给此路由以从某些第三方服务器获取响应。我已经通过 Spring 框架实例化了 Camel Context,如下所示:

<camelContext id="appCamelContext" xmlns="http://camel.apache.org/schema/spring"
        trace="true" streamCache="true">
        <propertyPlaceholder id="properties"
            location="classpath:camel.properties" />
        <camel:routeBuilder ref="oneRouteBuilder" />
        <camel:routeBuilder ref="photosRouteBuilder" />
</camelContext>

现在的问题是,我立即向该路由发送了多条不同的消息。现在Camel文档说直接组件在单线程中调用并且是同步的。那么所有消息会同时处理还是会逐一处理呢?

另外,如果我将直接组件更改为 seda,会有什么不同吗?

TIA

更新[在彼得回答之后]: 虽然 Petter 的答案已经澄清,但我对相同的 Direct 和 Seda 组件有新的疑问。可以说我的路线现在是这样的:

public void configure(){
from("direct:services")
 .choice()
 .when("some predicate here-Predicate1")
 .to("seda:predicate1")
 .otherwise()
 .to("seda:fallback")
 .end();

 from("seda:predicate1")
 .process("some processing")
 .to("http://ThirdPartyServers");

 from("seda:fallback")
 .process("some processing")
 .to("jms:fallbackqueue");
}

现在,如果我从不同线程向直接组件发送 5 条消息,那么这些消息将被并发处理。正如您在上面的路由中看到的,直接组件将消息发送到 seda 组件。那么现在 seda 组件中是否只有一个线程来处理所有不同的 5 条消息?意思是最后所有的消息都会被一一处理吗?


直接组件在调用者的线程中运行。简单来说,它就像一个常规的 java 方法调用。只要多个线程调用直接端点,就可以通过该路由运行多个消息。

调用 SEDA(或 VM)端点时,您的消息将被放入队列(在内存中)。另一个线程(在路由中)从队列中一一挑选消息并处理它们。您可以通过设置并发消费者选项来配置 seda 使用者应拥有的线程数。默认情况下,使用消息的一个线程确保一次仅处理一条消息,无论有多少线程生成此路由。

这归结为你的陈述

瞬间我向这条路线发送了多条不同的消息

如果这意味着不同的线程,或者仅来自序列中的一个线程,

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

回归基础:Apache Camel 路由和直接组件 的相关文章

  • 如何使用 Maven Failsafe 插件运行 JUnit 5 集成测试?

    当我运行命令时 Maven Failsafe 插件找不到我的 JUnit 5 集成测试mvn clean failsafe integration test 尽管它可以找到文件 我有junit jupiter api and junit j
  • 单元测试组合服务方法

    我正在为一个类编写 junit 单元测试 该类使用以下方法实现公开的接口 public Set
  • 在命令行java中突出显示文本[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一项任务是重新创建 unix cal 程序 除了一部分之外 相当简单 今天 它突出显示了该数字 我不知道该怎么做 关于如何在 Ja
  • 尝试获取屏幕上绘制的每个随机圆圈的 x、y 坐标

    您好 我正在制作一款游戏 该游戏将在屏幕上创建随机圆圈 随机创建的圆圈的值为红色或绿色 我的问题是 我希望不仅能够确定用户何时单击其中一个圆圈 而且还能够确定他们最终单击的圆圈 红色或绿色 下面是我的代码 我的主要问题是试图找到将要绘制的圆
  • 如何将现有的 SQLite3 数据库导入 Room?

    好吧 我在桌面上使用 SQLite3 创建了一个只需要读取的某些信息的数据库 我正在制作的应用程序不需要在此表中插入或删除信息 我在 Room 数据库层上做了相当多的谷歌搜索 所有文档都需要在构建应用程序时在 Room 中创建一个新的数据库
  • 检查 IPv4 地址是否在私有范围内

    在 Python 中 使用 IPy 模块您可以执行以下操作 gt gt gt ip iptype PRIVATE 有没有一个库或简单的方法可以在 Java 中执行相同的操作 似乎不完全是但是InetAddress有一些 isXX 方法 例如
  • 使用 JSch 分别为各个提示提供输入

    问题是 SSH 连接需要在常规登录后提供另一个用户 ID 和密码信息 我正在使用 JSch 连接到远程服务器 它接受以下形式的输入InputStream 和这个InputStream只能通过一次 由于会话是交互式的 这会导致问题 我尝试将输
  • OpenNLP 与斯坦福 CoreNLP

    我一直在对这两个包进行一些比较 但不确定该往哪个方向走 我简单地寻找的是 命名实体识别 人 地点 组织等 性别识别 一个不错的训练 API 据我所知 OpenNLP 和斯坦福 CoreNLP 提供了非常相似的功能 然而 Stanford C
  • 在 Java 中创建 T 的新实例

    在C 中 我们可以定义一个泛型class A
  • 正则表达式在 Velocity 模板中不起作用

    我在 Test java 中尝试过这个 String regex lt s br s s gt String test1 lt br gt System out println test replaceAll regex 但是当我在速度模板
  • 从 HttpClient 3 转换为 4

    我已经成功地对所有内容进行了更改 但以下内容除外 HttpClient client HttpPost method client new DefaultHttpClient method new HttpPost url InputStr
  • 查找数组中的组合

    我在java中有一个像这样的二维数组 transmission communication tv television approach memorycode methodact 我需要获得所有组合 例如 transmission appr
  • 如何使用 swagger-codegen-plugin (maven) 生成客户端代码?

    我需要使用 swagger codegen plugin for maven 在 eclipse 中生成服务器存根代码 你能帮忙怎么做吗 以及需要什么配置 在 pom xml 中 我找到了这个答案 您只需要像下面这样更改 pom xml 即
  • 从 Android 访问云存储

    我一直无法找到任何有关如何从 Android 应用程序使用云存储的具体文档 我确实遇到过这个客户端库 https cloud google com storage docs reference libraries然而 Google Clou
  • MongoDB java 驱动程序 3.0 在身份验证时无法捕获异常

    我超级卡住o 0 在尝试通过 Java 驱动程序进行身份验证时 存在捕获异常的问题 正如你可能会看到的Throwable类不工作 private MongoClient mongoClient private MongoDatabase m
  • 使用 HTTPServletRequestWrapper 包装请求参数

    我有一个可以验证 授权 REST 调用的过滤器 该过滤器需要访问请求参数 因此我为此编写了一个自定义 HTTPServletRequestWrapper import java util Collections import java ut
  • Java和手动执行finalize

    如果我打电话finalize 在我的程序代码中的一个对象上 JVM当垃圾收集器处理这个对象时仍然再次运行该方法吗 这是一个大概的例子 MyObject m new MyObject m finalize m null System gc 是
  • Java:一个函数有多种返回类型...可以使用泛型吗?

    为了简单起见 我有一些程序 如下所示 public String fetchValueAsString String key public DateTime fetchValueAsDateTime String key 我想要类似的东西
  • android 中的 java.net.URL ..新手问题

    我是java新手 正在尝试android开发 以下代码生成 malformedURLException 有人可以帮助我识别异常吗 任何提示都会非常有帮助 package com example helloandroid import and
  • Android Google 地图无法在当前主题中找到样式“mapViewStyle”

    添加谷歌地图视图时 我扩展了MapView 使用xml编辑器将其添加到活动中 并将我的谷歌地图api密钥手动添加到布局xml文件中 我的权限在清单文件中允许互联网 我想知道的是 在 xml 编辑器中 我收到错误 无法在当前主题中找到样式 m

随机推荐

  • 查找可以用 1 和 0 书写的数字的倍数

    给定数字n 2 10 3 gt 111 4 gt 100 7 gt 1001 11 gt 11 9 gt 111 111 111 我的想法不太好 n 2 和 n 5 000 幻影的最大值 2 5 gt n 3 111 我认为 剩下的数字除法
  • 检查失败:mdb_status == 0 (2 vs. 0) 没有这样的文件或目录

    我在训练数据时收到以下错误 我已经尝试了互联网上给出的所有解决方案 但似乎没有一个对我有用 我已检查 lmdb 文件的路径和大小不为零 但问题仍然存在 我不知道如何解决这个问题 pooling I0411 12 42 53 114141 2
  • 根据窗口大小调整页面元素的大小

    Problem 我的客户希望我为他的产品创建一个启动网页 以便页面上不应该有滚动 任何浏览器或窗口尺寸 Doubt 使用 CSS 和 JavaScript 可以实现这一点吗 一些早期诊断 这可能有点类似于this or this但不同之处在
  • Xamarin.Auth Google 登录完成后不会自动关闭

    我跟随导游在此输入链接描述 当我登录我的谷歌帐户时遇到问题 它显示 toast 并且浏览器不会自动关闭以支持我的 Thanks 在您的 CustomUrlSchemeInterceptorActivity 页面中替换 OnCreate 内
  • 保存多帧 TIFF

    我从 C 应用程序中的 Stream 加载多帧 TIFF 然后使用 Image Save 方法保存它 但是 这仅保存第一帧的 TIFF 如何让它保存多帧 tiff 由于您没有提供任何详细信息 仅提供一些一般提示 多帧 TIFF 是非常复杂的
  • Bootstrap 导航栏宽度与容器相同

    我正在使用 Bootstrap 3 我不能让导航栏与容器具有相同的宽度 如果它适用于大屏幕但不适用于其他屏幕尺寸 我如何制作固定大小的导航栏 它将改变与容器宽度相同的不同屏幕 div class row div
  • 从 NSUserDefaults 字典 iOS 中删除所有键

    我使用 NSUserDefaults 字典来存储基本信息 例如高分等 以便当用户关闭应用程序时数据不会丢失 无论如何我使用 NSUserDefaults prefs NSUserDefaults standardUserDefaults 存
  • 如何使用 PYQt' QImage scanline() 访问像素数据

    我需要使用 PyQt4 访问 qimage 对象中的像素数据 pixel 太慢 因此文档说使用 scanline 方法 在 C 中 我可以获得 scanline 方法返回的指针 并从缓冲区读取 写入像素 RGB 值 使用Python 我得到
  • 如何在 CentOS 7 上安装最新版本的 Docker [已关闭]

    Closed 这个问题是与编程或软件开发无关 目前不接受答案 我正在尝试在 CentOS 7 64 位系统上安装现代 docker io 版本 1 5 yum 服务器附带的默认 docker io 是 1 3 2 并且 这个版本对于我需要的
  • 该文档没有页面。贾斯珀报告

    我在寻找此问题的解决方案时遇到问题 我的代码运行后工作正常 它假设将我的 sql 数据库上的数据显示到我的 jtable 中 并且有一个按钮将触发显示 jasper 报告 但有一点问题 它总是向我显示消息 文档没有页面 这是为什么 有人可以
  • 如何使用 adb shell 打开 Android 设备扬声器

    没有看到任何关于使用 adb shell 打开 Android 设备扬声器的命令 好奇是否有办法 call phone adb shell am start a android intent action CALL d tel X XXX
  • 如何使用 solana rust 合约发送 SOL

    我是一名 Rust Solana 开发新手 感觉我遇到的问题对大多数其他新手都有帮助 我想知道如何在指令期间将 SOL 从帐户转移到程序 然后能够将 SOL 发送回调用该指令的帐户 我读了https docs solana com 但我找不
  • 为什么调用 main 函数被认为是未定义的行为 (UB)

    我担心这又是一个关于解释 ISO IEC 14882 C 标准 的问题 但是 正在呼叫main从程序中 例如我的使命main 递归地从main至少不是实现定义的行为 更新 我的意思是稍后格式不正确 未定义实现 也不是 UB 请参见下文并回答
  • 无法查看 Azure 日志流中的日志

    在我的 Web Api 应用程序中 我有控制器 Route api controller public class ValuesController Controller GET api values HttpGet public IEnu
  • GtkDrawingArea - 如何使其可绘制?

    我有点失去理智了 我正在尝试使用 cairo 在 GTK 表单上绘制一些简单的图形 include
  • 晾干石头剪刀布

    我是一个新手 ruby 程序员 虽然这段代码可以工作 但我想知道如何改进它 我对 lambda 和 procs 等的了解非常有限 但任何建议都会很棒 有什么办法可以简化if else每种情况下的陈述 另外 有没有什么替代方法case语句被跳
  • 如何在javascript中设置JSTL变量值?

    如何在javascript中设置JSTL变量值 我如何设置 user 多变的 JSTL 来自 的值val1 JavaScript 这是不可能的 因为它们在不同的环境中执行 JSP 在服务器端 JavaScript 在客户端 因此它们不会按照
  • 在 save_post 上设置产品重量的挂钩

    有没有办法设置产品重量save post hook 我有以下代码 但我不知道如何覆盖重量 add action save post change weight function change weight post id WC Produc
  • 为 Neo4j 的 CQL 创建 NOT MATCH 命令?

    我有一个非唯一节点 Neighborhood 它唯一地出现在 IN 一个 City 节点 我想创建一个新的邻里节点 并仅当该邻里节点不存在于该城市时才建立其关系 可以有多个具有相同名称的社区 但每个社区必须在房产城市中唯一出现 遵循吉尔在这
  • 回归基础:Apache Camel 路由和直接组件

    我对骆驼路线及其两个端点有点困惑 Direct 和 Seda 好吧 假设我有一条这样的路线 public void configure from direct services process Some processing here to