如何获取传入消息,运行反向查询,如果存在匹配项,则使用原始消息的全文通知kafka?
我目前有一个警报和我的规则调用这个工作xdmp:http :
xdmp:http-post("http://localhost:8082/topics/MyTopicName",
<options xmlns="xdmp:http">
<data>{'{"records":[{"value": {"my alert" : "Content updated." } }]}'
</data>
<headers>
<content-type>application/vnd.kafka.json.v1+json</content-type>
</headers>
</options>);
但是我想发送原始的传入消息,而不是字符串“content updated”。
1条答案
按热度按时间bq3bfh9z1#
我假设您的代码示例作为“操作”运行。如果是这样,它应该在顶部声明一些外部变量,如文档中所述:触发警报时要执行的操作
这个
$alert:doc
变量应该包含与您的规则匹配的文档,以便您可以将其用作http post的数据。[编辑]添加有关发送json中嵌入的xml文档的详细信息:
假设您正在使用这里描述的汇合rest代理https://www.confluent.io/blog/a-comprehensive-open-source-rest-proxy-for-kafka/,我认为您需要将其作为记录值对象编码到json中。您可以添加这样的代码来创建有效负载
然后你可以把它作为你帖子里的数据发送出去
就像我在评论里说的,我不是Kafka的Maven,所以我还没有检查过它是否真的有效。这是一种构造json负载的方法,它将xml文档作为“value”对象的属性嵌入其中。
您可能考虑的另一种方法是使用xpath从xml文档中提取所需的字段,并将这些字段作为json中“value”对象的属性传递。这样您就不会传递整个xml,而是只传递所需的字段。