gpt4 book ai didi

java - 在我的 route 获取要处理的条目的正确方法是什么

转载 作者:行者123 更新时间:2023-12-01 21:59:51 25 4
gpt4 key购买 nike

这是我的第一个问题,所以如果我的问题缺少一些核心信息,请耐心等待。我会尽力尽快添加所需的信息。我正在设置一个 Camel 路由,从我的数据库检索 URL 并将该 URL 发送到爬虫,该爬虫收集一些产品数据。然后,我从爬网程序收到的数据将保存回数据库中的另一个集合中。当我抓取另一个包含相同产品的 URL 时,我想将新收到的数据添加到数据库中的对象中。

我尝试将新接收到的数据保存在属性中,然后设置两个常量以在数据库中查找相应的项目。找到对象后,我想将接收到的数据发送到我的处理器,在处理器中我将新数据添加到检索到的对象中,然后将其保存回数据库。

from("direct:myRoute")
...
.setProperty("newItem").simple("${body}")
.setBody().constant("{ 'name': $.name}")
.setBody().constant("{ 'brand': $.brand}")
.to("mongodb:mongoBean?database={{db}}&collection=
{{col}}&operation=findOneByQuery")
...

预期的结果应该是,我的数据库对象存储了旧信息和新收到的信息,但我得到的是, { 'name': $.name} 无效BasicDBObject,品牌相同。

更新

所以,我发现,设置两个常量对于我想要实现的目标是不可能的。我进行了一些实验,并能够使其与硬编码示例一起工作。

from("direct:myRoute")
...
.setProperty("newItem").simple("${body}")
.setBody().constant("{ 'name': 'product', 'brand': 'manufacturer'}")
.to("mongodb:mongoBean?database={{db}}&collection=
{{col}}&operation=findOneByQuery")
...

但问题仍然存在,我想将“名称”和“品牌”设置为从正文中提取的 json 变量。

更新2

我对代码做了一些更改,并在我的代码中尝试了以下示例。

from("direct:myRoute")
...
.setProperty("newItem").simple("${body}")
.setBody().constant("{ 'name' : '{$.name}', 'brand' : '{$.brand}' }")
.to("mongodb:mongoBean?database={{db}}&collection=
{{col}}&operation=findOneByQuery")
...

我没有收到错误,但它没有按预期工作。我希望 $.name 和 $.brand 将被替换为存储在正文中的变量,但似乎它们“按原样”使用

2019-11-06 13:27:43.363 INFO 2132 --- [ XNIO-1 task-1] DEBUG : Exchange[ExchangePattern: InOut, BodyType: String, Body: { 'name' : '{$.name}', 'brand' : '{$.brand}' }]

最佳答案

好的,我们找到了适合我们用例的解决方案。我们将名称和品牌设置为属性,并使用简单的方法设置带有这些属性的正文。

from("direct:myRoute")
...
.setProperty("newItem").simple("${body}")
.setProperty("name").jsonpath("$.name")
.setProperty("brand").jsonpath("$.brand")
.setBody().simple("{'name':'${property.name}','brand':'${property.brand}'}")
.convertBodyTo(String.class)
.to("mongodb:mongoBean?database={{db}}&collection=
{{col}}&operation=findOneByQuery")
...

关于java - 在我的 route 获取要处理的条目的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58712681/

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