gpt4 book ai didi

java - Apache Camel 条件路由

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

我有一个有两个操作的服务。

RegisterUser
UpdateUser

我有一次 Camel 溃败:

<camel:route id="myRoute">
<camel:from uri="cxf:bean:myListenerEndpoint?dataFormat=POJO&amp;synchronous=true" />
<camel:bean ref="processor" method="processMessage"/>
<camel:to uri="xslt:file:resources/service/2.0.0/UserRegistration.xsl"/>
<camel:to uri="cxf:bean:myTargetEndpoint"/>
</camel:route>

在我的处理器 bean 中,当我指定时:

RegisterUser registerUser = exchange.getIn().getBody(RegisterUser.class);

我得到注册用户对象。一切正常。问题是我希望 Camel 有条件地路由我的请求,例如:

如果服务操作是 RegisterUser 我想将消息路由到我的特定 bean 如果服务操作是 UpdateUser 我想将消息路由到另一个 bean .

我试过使用 camel xPath,但它似乎不起作用。

<camel:route id="myRoute">
<camel:from uri="cxf:bean:myListenerEndpoint?dataFormat=POJO&amp;synchronous=true" />
<camel:choice>
<camel:when>
<camel:xpath>
//RegisterUser
</camel:xpath>
<camel:bean ref="processor" method="processMessage"/>
<camel:to uri="xslt:file:resources/service/2.0.0/UserRegistration.xsl"/>
</camel:when>
</camel:choice>
<camel:to uri="cxf:bean:myTargetEndpoint"/>
</camel:route>

我正在搜索如何设置 Camel 以路由到不同的目标,但没有找到任何东西。也许有人知道问题出在哪里?

最佳答案

所需操作的信息将在消息的头部。

您要查找的 header 称为“operationName”

下面是一个例子:

<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<route id="example">
<from uri="cxf:bean:myListenerEndpoint?dataFormat=POJO&amp;synchronous=true" />
<log message="The expected operation is :: ${headers.operationName}" />
<choice>
<when>
<simple>${headers.operationName} == 'RegisterUser'</simple>
<bean ref="processor" method="processMessage"/>
<to uri="xslt:file:resources/service/2.0.0/UserRegistration.xsl"/>
</when>
<when>
<simple>${headers.operationName} == 'UpdateUser'</simple>
<!-- Do the update user logic here -->
<bean ref="processor" method="updateUser" />
</when>
</choice>
<to uri="cxf:bean:myTargetEndpoint"/>
</route>
</camelContext>

(请注意该示例使用的是 apache aries blueprint - 但它对于 spring 来说是相同的,除了命名空间之外)

关于java - Apache Camel 条件路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11691074/

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