gpt4 book ai didi

Java 即发即忘 CXF Web 服务调用 Camel 应用程序

转载 作者:行者123 更新时间:2023-12-01 12:48:29 24 4
gpt4 key购买 nike

我有一个 Java Web 应用程序(引用引擎),它对另一个 Java Web 应用程序(多播程序)进行 Web 服务调用,该应用程序利用 Apache Camel 将消息多播到多个端点。

我们正在使用一个 apache CXF Web 服务,该服务是在多播器项目的 Camel 上下文中定义的。目前报价引擎项目没有使用camel。

<cxf:cxfEndpoint id="caster"
address="http://localhost:${multicaster.port}/caster"
serviceClass="uk.co.glad.caster.core.casterWS"/>

有关更多信息,这里是我的多播路由

        <camel:route id="casterRoute">
<camel:from ref="caster" />
<camel:process ref="initProcessor" />
<camel:multicast parallelProcessing="true" stopOnException="false" streaming="true">
<camel:to uri="direct:WebService1"/>
<camel:to uri="direct:WebService2"/>
</camel:multicast>
</camel:route>

我需要对caster cxf端点的调用是即发即忘的。我想向此服务发送消息并继续在报价引擎项目中进行处理,而无需等待回复。

我的网络服务有一个 void 返回类型,因为我们甚至不需要回复。

我想我也许可以使用并发 API 和 future 对象来解决这个问题,但我想知道是否有更干净的方法来做到这一点。也许使用 Camel 配置,我已经阅读了“inonly”参数,但我不知道如何在我的配置中使用它。

谢谢

汤姆

正如下面克劳斯提到的使用wireTap解决了这个问题

        <cxf:cxfEndpoint id="caster"
address="http://localhost:${multicaster.port}/caster"
serviceClass="uk.co.glad.caster.core.casterWS"/>

<camel:route id="tap">
<camel:from ref="caster" />
<camel:wireTap uri="direct:casterRoute" />
</camel:route>

<camel:route id="casterRoute">
<camel:from uri="direct:casterRoute" />
<camel:process ref="initProcessor" />
<camel:multicast parallelProcessing="true" stopOnException="false" streaming="true">
<camel:to uri="direct:WebService1"/>
<camel:to uri="direct:WebService2"/>
</camel:multicast>
</camel:route>

最佳答案

使用窃听 eip http://camel.apache.org/wire-tap然后您可以独立处理点击的消息,并且您的 CXF Web 服务可以尽快终止。

关于Java 即发即忘 CXF Web 服务调用 Camel 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24452890/

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