Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ApacheCamel中的类型转换错误_Java_Apache Camel_Aggregation_Dsl - Fatal编程技术网

Java ApacheCamel中的类型转换错误

Java ApacheCamel中的类型转换错误,java,apache-camel,aggregation,dsl,Java,Apache Camel,Aggregation,Dsl,我正在做一个关于ApacheCamel能否满足我作为请求聚合器的需求的POC 假设我有一个现有的系统,其中我在两个不同的服务上创建用户。因此,使用Camel,我希望将这两个步骤聚合为一个聚合请求。 我这里有两个不同的问题 聚合器模式是这样做的正确方法吗?也就是说,在结束时,如果我对first service的调用因任何原因失败,我希望整个请求都失败 第二,[请理解,我仍然是一个新手,请纠正我]我尝试实现一个基本流程,我想做一些转换,从DemoUserRequest的用户名中提取名字,并将其传递

我正在做一个关于ApacheCamel能否满足我作为请求聚合器的需求的POC

假设我有一个现有的系统,其中我在两个不同的服务上创建用户。因此,使用Camel,我希望将这两个步骤聚合为一个聚合请求。 我这里有两个不同的问题

  • 聚合器模式是这样做的正确方法吗?也就是说,在结束时,如果我对first service的调用因任何原因失败,我希望整个请求都失败
  • 第二,[请理解,我仍然是一个新手,请纠正我]我尝试实现一个基本流程,我想做一些转换,从DemoUserRequest的用户名中提取名字,并将其传递给DemoUserMS1Request,如下所示,然后调用MS2
请求时我面临一个问题

curl --location --request POST 'http://localhost:8081/api/v1/user' \
--header 'Content-Type: application/json' \
--data-raw '{
    "userID" : "1",
    "userName" : "abc def",
    "userLanguage" : "EN"
}'
骆驼抛出错误,比如

java.lang.NullPointerException
    at com.unbxd.hagrid.routes.DemoRoute$1.process(DemoRoute.java:42)
[在log.info行] 有什么方法可以将JSON请求转换到POJO中吗?

您有:

DemoUserRequest demoUserRequest = exchange.getIn(DemoUserRequest.class);
您应更改为:

DemoUserRequest demoUserRequest = exchange.getIn().getBody(DemoUserRequest.class);

您好,如果我理解得很好,您希望将rest调用桥接到两个端点,对吗?如果是这种情况,Camel不需要知道您的负载。您可以在两个“到”路由中声明OneException,并且只有在两个路由都成功时才返回200。我说的对吗?谢谢你检查罗德里戈。我想让Camel知道有效负载,因为我想在调用其他端点之前进行一些转换。假设我想从DemoUserRequest中的用户名生成名字,并在DemoUserMS1Request中使用它。您的POJO是否实现了可序列化?我在错误中看到的数据是Arraylist。您需要在ummarshalling之前将其转换为json。在解组之前,添加
.marshal().json(JsonLibrary.Jackson)
,看看它是否适合您。@SneharghyaPathak我在解组之前按照您现在的建议进行了解组,但它没有起作用,因为它现在抛出了NPE,表明转换不正确。你能建议一个解决这个问题的方法吗?[编辑文章以反映我当前的代码]这是有效的,因为典型的交换包含路由处理器所需的头和正文。谢谢你的建议@rodrigocoelho
curl --location --request POST 'http://localhost:8081/api/v1/user' \
--header 'Content-Type: application/json' \
--data-raw '{
    "userID" : "1",
    "userName" : "abc def",
    "userLanguage" : "EN"
}'
java.lang.NullPointerException
    at com.unbxd.hagrid.routes.DemoRoute$1.process(DemoRoute.java:42)
DemoUserRequest demoUserRequest = exchange.getIn(DemoUserRequest.class);
DemoUserRequest demoUserRequest = exchange.getIn().getBody(DemoUserRequest.class);