使用 Apache Camel 从 Mongo 数据库中删除文档
Remove a document from Mongo DB with Apache Camel
我的主要问题可能是不理解 Camel 文档中的一些约定。
https://camel.apache.org/components/latest/mongodb-component.html#_delete_operations
他们有一条骆驼路线被注释掉,并且定义了两个 Java 对象,但没有被注释掉。他们想表达什么?这些对象在项目中的什么位置?
无论如何,我订阅了一个 JMS 队列,我有另一个 camel 路由发布到该队列。该消息是一个 JSON 字符串,我将其保存到 Mongo 数据库中。但我想做的是删除所有当前文档(基于条件)并用新消息替换它。
from("jms:topic:orderbook.raw.feed")
.log("JMS Message: ${body}")
.choice()
.when().jsonpath("$.[?(@.type=='partial')]")
// Figure out how to delete the old orderbook from Mongo with a type=T1
.to("mongodb:mongo?database=k2_dev&collection=orderbooks&operation=save");
你的订单有ID吗?如果是这样,您可以使用 _id
字段(MongoDB 标识符的默认表示)来丰富 JSON,其值将是该 ID。因此,您将“更新”该订单簿。
观察:当然,Camel 文档可能会更好。
但如果您真的觉得在保存订单簿之前必须执行 remove
操作,另一种选择是从当前 JSON 字符串中提取其类型并将其用作删除时过滤。类似于:
from("jms:topic:orderbook.raw.feed")
.log("JMS Message: ${body}")
.filter("$.[?(@.type=='partial')]")
.multicast().stopOnException()
.to("direct://orderbook-removal")
.to("direct://orderbook-save")
.end()
;
from("direct://orderbook-removal")
// extract type and set it as the body message. e.g. {"type":"T1"}
.to("mongodb:mongo?database=k2_dev&collection=orderbooks&operation=remove")
;
from("direct://orderbook-save")
.to("mongodb:mongo?database=k2_dev&collection=orderbooks&operation=save")
;
multicast
将邮件的副本发送到每个目的地。所以内容不会受到影响。
我的主要问题可能是不理解 Camel 文档中的一些约定。
https://camel.apache.org/components/latest/mongodb-component.html#_delete_operations
他们有一条骆驼路线被注释掉,并且定义了两个 Java 对象,但没有被注释掉。他们想表达什么?这些对象在项目中的什么位置?
无论如何,我订阅了一个 JMS 队列,我有另一个 camel 路由发布到该队列。该消息是一个 JSON 字符串,我将其保存到 Mongo 数据库中。但我想做的是删除所有当前文档(基于条件)并用新消息替换它。
from("jms:topic:orderbook.raw.feed")
.log("JMS Message: ${body}")
.choice()
.when().jsonpath("$.[?(@.type=='partial')]")
// Figure out how to delete the old orderbook from Mongo with a type=T1
.to("mongodb:mongo?database=k2_dev&collection=orderbooks&operation=save");
你的订单有ID吗?如果是这样,您可以使用 _id
字段(MongoDB 标识符的默认表示)来丰富 JSON,其值将是该 ID。因此,您将“更新”该订单簿。
观察:当然,Camel 文档可能会更好。
但如果您真的觉得在保存订单簿之前必须执行 remove
操作,另一种选择是从当前 JSON 字符串中提取其类型并将其用作删除时过滤。类似于:
from("jms:topic:orderbook.raw.feed")
.log("JMS Message: ${body}")
.filter("$.[?(@.type=='partial')]")
.multicast().stopOnException()
.to("direct://orderbook-removal")
.to("direct://orderbook-save")
.end()
;
from("direct://orderbook-removal")
// extract type and set it as the body message. e.g. {"type":"T1"}
.to("mongodb:mongo?database=k2_dev&collection=orderbooks&operation=remove")
;
from("direct://orderbook-save")
.to("mongodb:mongo?database=k2_dev&collection=orderbooks&operation=save")
;
multicast
将邮件的副本发送到每个目的地。所以内容不会受到影响。