【问题标题】:Apache Camel and Web ServiceApache Camel 和 Web 服务
【发布时间】:2016-02-03 00:51:45
【问题描述】:

我是 Camel 的新手,正在尝试做简单的事情。 在 Camel 内部,我想公开具有请求和响应的 Web 服务

public Response myMethod(Request r) {
//some logic here
}

在此方法中,我将进行请求验证:如果无效,我将在响应中使用某些代码 (FAILURE) 进行回复。

如果有效,我也会回复另一个代码(SUCCESS)。

如果成功,我需要 Camel 路由来启动,接受请求,转换它并发送到另一个服务。

我不明白的是 - 我如何回复客户并同时启动骆驼路线。

试图在谷歌上找到那个例子……没能找到。骆驼可以做我想做的事吗?

【问题讨论】:

  • 只是想澄清一下。在代码的请求验证部分之后,是否会返回任何其他响应,或者请求验证是唯一将返回的响应?
  • 只会返回 1 个响应

标签: web-services apache-camel


【解决方案1】:

我并没有放弃确定我理解您的问题,但要回复并继续您的流程,您可以使用 Camel 窃听功能。您可以在此处找到示例和说明。 http://camel.apache.org/wire-tap.html

【讨论】:

  • 我想要做的一种方法是......在 myMethod 中,我可以将消息放入某个 JMS 队列,我的流程将从该 JMS 队列开始。并且 myMethod 将正常返回 Response 。但是让 JMS 队列只是为了这种功能似乎是人为的
【解决方案2】:

你可以使用camel支持的request reply EIP。我可以想象你的路线看起来像这样:

from(start)
    .bean(validation)
    .setExchangePattern(ExchangePattern.InOnly)
    .to(end);

【讨论】:

    【解决方案3】:

    我认为你期待这样的事情。

    from("timer:foo?repeatCount=1").bean(validationBean).when(header.returncode==200).bean(nextbean).otherwise().log("你没有访问权限!!" ).end();

    在validation bean中,访问webservices并设置retrunco​​de的header进行validation,并设置另一个header作为reply value,以便在nextbean的交换中获取这些值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-04
      • 2012-08-16
      • 1970-01-01
      • 2015-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多