Apache Camel:我可以在条件选择语句的when部分中放置多个语句吗?

2023-11-26

我想获得以下类型的路由:

  1. 带有 XML 正文的 HTTP POST 消息进入 CAMEL
  2. 我存储了XML主体的一些参数
  3. 消息被路由到外部端点
  4. 外部端点(外部服务器)回复

-> 此时,我想检查来自外部端点的回复是否是包含等于 SUCCESS 的 XML 参数的 HTTP 200 OK。 -> 如果是这样,那么我想使用一些存储的参数来构造一个新的 HTTP 消息(这次是 method = PUT)并将其发送到外部端点

我目前遇到的问题如下:

.choice()
 .when(simple("${in.headers.CamelHttpResponseCode} == 200"))
   // now I want do a few things, eg: check also the XML body via xpath
   // and change the message to be sent out (change Method to PUT, ...)
    .to("http://myserver.com")
 .otherwise()
   // if no 200 OK, I want the route to be stopped ... not sure how ?
.end()

问题:知道如何在 HTTP 响应代码为 200 OK 的情况下添加这些额外的语句吗?看起来 when 不允许我添加额外的语句...... (我的 Eclipse IDE 出现错误)。

提前致谢。

注意:如果 200 OK 与“新端点”匹配,我是否必须路由消息,然后使用此新端点创建新的路由? 例如:

.choice()
     .when(simple("${in.headers.CamelHttpResponseCode} == 200"))
        .to("mynewendpoint")
     .otherwise()
       // if no 200 OK, I want the route to be stopped ... not sure how ?
    .end();

 from("mynewendpoint").
  .setHeader(etc etc)
  .to("http://myserver.com")

在后一种情况下,我应该如何定义这个“newendpoint”?


在 Java 等编程语言 DSL 中,您可以一起构建谓词。几年前我发表了一篇关于此的博客文章:http://davsclaus.blogspot.com/2009/02/apache-camel-and-using-compound.html

例如有两个谓词

Predicate p1 = header("hl7.msh.messageType").isEqualTo("ORM"):
Predicate p2 = header("hl7.msh.triggerEvent").isEqualTo("001");

您可以使用 and 或 or 将它们链接在一起。

Predicate isOrm = PredicateBuilder.and(p1, p2);

然后你可以在路由中使用 isOrm

from("hl7listener")
    .unmarshal(hl7format)
    .choice()
        .when(isOrm).beanRef("hl7handler", "handleORM")
        .otherwise().beanRef("hl7handler", "badMessage")
    .end()
    .marshal(hl7format);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apache Camel:我可以在条件选择语句的when部分中放置多个语句吗? 的相关文章

  • 如何在同一场战争的多个 jar 中使用相同的 CamelContext

    我使用的是camel 2 16 2 我需要在多个jar 中使用一个 CamelContext 因为我需要将所有 Camel 路由器放入一个 CamelContext 中 所以我的战争将把所有这些罐子作为 Maven 工件 请告诉我如何处理上
  • Akka 会淘汰 Camel 吗?

    My 理解Akka 的特点是它提供了一个模型 多个独立的线程可以通过该模型以高度并发的方式相互通信 它使用 参与者模型 其中每个线程都是一个 参与者 负责执行特定的工作 您可以编排在什么条件下将哪些消息传递给哪些参与者 我以前使用过 Cam
  • 为什么camel kafka Producer很慢?

    我使用 apache camel kafka 作为生成消息的客户端 我观察到 kafka 生产者需要 1 毫秒才能推送一条消息 如果我使用骆驼聚合将消息合并到批处理中 那么推送一条消息需要 100 毫秒 安装简述 3 kafka 集群 16
  • 使用camel从数据库读取并写入文件

    我想使用 Camel 从数据库读取记录并将记录写入文件 下面是我的代码 import javax sql DataSource import org apache camel CamelContext import org apache c
  • 如何使用 autoStartup=false 启动 Camel 路线

    我想使用以下命令来控制我的路线何时启动RoutePolicy 因此 我将其定义为autoStartup false
  • 批量消费骆驼kafka

    尽管遵循此处发布的示例 但我无法与卡夫卡骆驼消费者一起批量阅读 我是否需要对生产者进行更改 或者问题最有可能出在我的消费者配置上 有问题的应用程序利用卡夫卡骆驼组件 https camel apache org components 3 1
  • 是否可以使用 JavaMail 和 Apache Camel Mail (IMAP) 通过服务帐户连接 Microsoft Exchange 共享邮箱?

    我们使用 Apache Camel 通过 IMAP 连接到我们的收件箱 Apache Camel Mail 组件是基于 JavaMail 构建的 我们的测试服务器使用 Outlook 和 Office 365 我们使用 Outlook of
  • Camel REST Bean 链接

    我目前有一个 REST 路由构建器 如下所示 rest v1 post create to bean myAssembler method assemble in header content to bean myService metho
  • 如何设置camel处理器或其他路由成分的id

    Camel 自动生成处理器和其他内容的 ID processor1 processor25 有没有办法设置这个名字 我们需要通过 jmx 识别某些处理器来获取遥测数据 我想要设置的名称是通过属性给出的 它们在开始时是已知的 因此 我需要在定
  • 在 Camel 上下文中配置 Log4j

    是否可以配置 Camel 路由以将消息发送到特定的 log4j 记录器 例如 我有以下记录器
  • Camel Apache:从接收到的 XML 中提取一些值的 xpath

    在我的 Camel 路由期间 我查询服务器 HTTP GET 结果 我收到一个 200 OK 其 XML 正文看起来类似如下
  • 从 Apache Camel 内的 JSON 主体访问数据

    我正在使用一个 API 它基本上允许文件系统的导航 我正在尝试通过 API 从返回的 JSON 中访问数据 以便对其执行功能 下面是我使用访问 API 的代码 我尝试使用 unmarshal 来 将返回的 JSON 转换为 Map from
  • ESB 应该如何打包/部署?

    我正在尝试了解 Apache Camel 它似乎是一个轻量级的 ESB 如果我正确理解 Camel ESB 那么您可以将 Camel Route 视为节点和边的图 每个节点都是路由上的端点 可以消耗 产生消息 每条边都是两个不同端点 1 个
  • 如何在 Spring XML 中为 Apache Camel 的灵活聚合策略设置“选择”表达式?

    我正在尝试使用 Apache Camel 2 14 在 Spring XML 中配置 Apache Camel 路由 该路线将涉及
  • Apache Camel/ActiveMQ 优先级路由

    我有两个具有相同消费者的 AMQ 队列 第一个队列 Q1 处理 97 的消息 另一个队列 Q2 仅处理 3 问题是 Q2 中的消息需要在排队后立即处理 所以我的问题是 当第二季度有消息可用时 我需要以某种方式暂停第一条路线以吸引其消费者 a
  • Akka、SQS 和 Camel 的消费者投票率

    我正在做的一个项目需要从SQS读取消息 我决定使用Akka来分布式处理这些消息 由于 Camel 支持 SQS 并且在 Consumer 类中内置了 Akka 中使用的功能 因此我认为最好以这种方式实现端点并读取消息 尽管我还没有看到很多人
  • Apache Camel POJO Bean 处理器单例还是原型?

    我使用 Camel 的 spring DSL 来构建路由 并使用 POJO bean 作为处理器 最初 我这样做
  • 在apachecamel中处理大型压缩文件

    我正在尝试获取一个文件 zip从 ftp 服务器压缩并尝试将其存储在 S3 中 gzip使用骆驼压缩 以下是我目前的路线 from sftp username host file path password
  • WebSphere Camel JMS、spring、taskExecutor、haninging 线程

    我正在尝试将 Camel 与 WebSphere 集成 除了一件事之外 它工作得很好 场景如下 JMS WMQ gt 路由 转换 gt BEAN 执行 JPA OpenJPA1 2 DB2 提交 为了能够插入WAS事务管理器和mangaed
  • Camel end 与 endChoice - 不是通常的查询

    首先 是的 我已经搜索过 是的 我已经阅读了每个人都指向的同一个 Apache 文档 我认为这有点混乱 我想我知道答案 所以让我举一个我认为正确的例子 然后是我认为的答案 谢谢 哦 我确实知道某些 endChoice 行并不是严格必要的 C

随机推荐

  • Tensorflow 移动应用程序:不是有效的 TensorFlow Graph 序列化:NodeDef 提到 attr“扩张”不在 Op 中

    我尝试替换示例中的 graph pb 文件https codelabs developers google com codelabs tensorflow for poets 2但它无法在 Android 中启动 并出现错误 不是有效的 T
  • 如果两个不同类的实例具有相同的属性,如何自动映射两个不同类的实例之间的值?

    我有两个类 它们具有完全相同的成员 属性和字段 和相同的数据类型 我想以自动方式将成员从一个映射到另一个 我知道有更实用的开发方式可以处理 一种简单的解决方案是手动将每个成员从一个实例映射到另一个实例 但是 我想将其自动化作为一些通用解决方
  • iOS 14.2 Beta - AVPlayer 无法播放 [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 Apple 在 iOS 14 2 beta 中对 iOS 14 0 的 AVFoundation 进行了重大更改 正在播放控制中心 UI 更改等 问题是 在 iOS 14 0 中完美运行的
  • 存储 SEPA(IBAN 和 BIC)数据 - 需要 PCI 合规性吗?

    我们希望使用银行 API 从我们的银行帐户到用户的银行帐户进行 SEPA 转账 为此 用户需要在表格中输入他的 IBAN 和 BIC 我们获取这些数据 受 SSL 保护 并使用银行 REST API 转账 如果我们收到成功响应 我们会向用户
  • 如何安装 Rails MySQL 适配器?

    我的问题仅此而已 gem install mysql不起作用 我还没有通过谷歌搜索找到任何东西 当我尝试时gem install mysql2 这就是我得到的 我现在不知道该怎么办 jason buster projects mcif ra
  • 使用全宽,不包括溢出滚动条和“位置:绝对”

    我希望在固定顶部位置有一个全宽的小红色 div 位于另一个具有overflow scroll 我希望 jsFiddle 说清楚 http jsfiddle net mCYLm 2 问题是红色 div 与滚动条重叠 我猜right 0意味着右
  • 如何在 Angularjs 中观察按键组合? [复制]

    这个问题在这里已经有答案了 我正在尝试让我的控制器监视按键组合 为了便于论证 我们可以说 上 下 下 左 右 左 右 b a 无论用户当前位于页面的哪个位置 我怎样才能有角度地寻找这些内容 看起来你可以使用ng keydown去做这个 这里
  • 在流星中处理多个“页面”的正确方法

    在流星中处理多个 页面 的 正式 方式是什么 我说 页面 我见过人们用几种不同的方式来做这件事 我见过人们创建实际的完整页面 index html about html contact html 然后当单击链接时 您将编写一个路由来呈现这些
  • Facebook Account Kit 与 Google play services gradle 的冲突

    配置account kit sdk后为 compile com facebook android account kit sdk 4 和 gradle 同步它与冲突com google android gms gradle as 混合版本可
  • JavaScript 变量引用/别名

    javascript 中是否可以以某种方式为本地变量分配别名 引用 我的意思是类似 C 的东西 function foo var x 1 var y x y alert x prints 2 EDIT 是否可以在这段代码中为argument
  • 根据字典替换 NumPy 数组中的值,并避免新值和键之间的重叠

    我想根据 python 中的以下字典替换 2D numpy 数组中的值 code region 334 0 4 22 8 31 12 16 16 17 24 27 28 18 32 21 36 1 我想找到以下单元格numpy匹配的二维数组
  • 最佳实践:PHP 魔术方法 __set 和 __get [重复]

    这个问题在这里已经有答案了 可能的重复 魔术方法是 PHP 中的最佳实践吗 这些都是简单的示例 但想象一下您的类中拥有的属性多于两个 最佳实践是什么 a 使用 get 和 set class MyClass private firstFie
  • 使用 Scala 转换 PySpark RDD

    TL DR 我在 PySpark 应用程序中有看起来像字符串 DStream 的东西 我想将其作为DStream String 到 Scala 库 不过 Py4j 不会转换字符串 我正在开发一个 PySpark 应用程序 该应用程序使用 S
  • 测试链表是否有环的最佳算法

    确定链表中是否有循环的最佳 停止 算法是什么 编辑 对时间和空间的渐近复杂性进行分析会很不错 因此可以更好地比较答案 编辑 最初的问题不是解决出度 gt 1 的节点 但有一些讨论 这个问题更像是 检测有向图中循环的最佳算法 有两个指针遍历列
  • 没有 Spring Boot 的 spring-cloud-config 客户端

    我刚刚进入 spring cloud config 并且正在研究这个基础项目 我想知道是否可能以及如何重写此客户端以不使用 Spring Boot import org springframework beans factory annot
  • 使用 YUI 压缩器时,应该合并然后缩小,还是缩小然后合并?

    我读过一些人说 如果您组合然后缩小 可能会出现问题 并且您应该始终缩小然后组合 例如 参见评论这个问题 但是 我从未见过这些问题的示例 也从未遇到过这些问题 我也找不到 YUI 开发人员的任何官方说明最佳实践是什么 由于压缩算法的工作方式
  • vsync 在什么时候“等待”(阻塞)?

    假设我有一个速度非常快的程序 如果禁用垂直同步 运行速度将超过 60fps vsync什么时候强制程序等待 当您清除屏幕或翻转缓冲区时它会阻塞吗 或者是其他我不知道的时间 顺便说一句 我指的是 OpenGL 额外问题 鉴于阻塞发生不一定是特
  • 如何通过 Facebook Android SDK 向好友发送应用请求

    目前我正在开发一个 Android 应用程序 我正在使用 Facebook SDK 它可以很好地向墙上发布消息等 但通过此 SDK 我无法向其他人发送应用程序请求 谁能帮我吗 这是我的代码片段 Bundle params new Bundl
  • 网络流量监控

    我可以在Java上创建网络流量监控程序吗 该程序必须控制从计算机程序 包括操作系统模块 到网络驱动程序并返回的所有网络流量 如果是 如何 NOTE 我不仅想要监控流量还想要控制它 我想在Windows NT上实现这样的系统 单纯依靠Java
  • Apache Camel:我可以在条件选择语句的when部分中放置多个语句吗?

    我想获得以下类型的路由 带有 XML 正文的 HTTP POST 消息进入 CAMEL 我存储了XML主体的一些参数 消息被路由到外部端点 外部端点 外部服务器 回复 gt 此时 我想检查来自外部端点的回复是否是包含等于 SUCCESS 的