当前位置: 首页 > 知识库问答 >
问题:

如何在Spring Boot应用程序中使用apache camel使用json模式验证消息正文

锺离马鲁
2023-03-14

我正在学习ApacheCamel,我创建了一个spring boot项目,我想用json模式验证消息体。在我的项目中,我创建了一条路径,在该路径中,我从计算机中的位置获取文件,然后将其传递到下一个endpoint,在那里我应用了json验证程序组件,然后传递到sedaendpoint,在那里我使用了输出。

代码如下:

@SpringBootApplication
public class ExampleCamelDemoApplication {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(ExampleCamelDemoApplication.class, args);


        CamelContext context = new DefaultCamelContext();

        context.addRoutes(new RouteBuilder() {

            public void configure() throws Exception {

//
                from("file:C:\\sourceFolder?fileName=test.json&noop=true").convertBodyTo(String.class).to("json-validator:classpath:myschema.json")
                .to("seda:end");
            }

        });
        context.start();
        ConsumerTemplate ct = context.createConsumerTemplate();
        System.out.println(ct.receiveBody("seda:end"));
        Thread.sleep(10000);
        context.stop();

    }

}

测试。json文件内容为:

{
  "id" :1
 }

myschema.json文件内容是:

{
  "id" :1
 } 

我把myschema.json文件放在src/main/Resources文件夹中

我得到错误:

RouteId ProcessorId处理器已用时间(毫秒)[route1][route1][from[file://C:\sourceFolder?fileName=test.json

java.lang.NullPointerException: null atcom.networknt.schema.JsonSchema.combineMONtUriSusIds(JsonSchema.java:87)~[json-schema-validator-1.0.29.jar: na]atcom.networknt.schema.JsonSchema.(JsonSchema.java:75)~[json-schema-validator-1.0.29.jar: na]atcom.networknt.schema.JsonSchema.(JsonSchema.java:62)~[json-schema-validator-1.0.29.jar: na]atcom.networknt.schema.JsonSchema.(JsonSchema.java:57)~[json-schema-validator-1.0.29.jar: na]atcom.networknt.schema.JsonSchemaFactory.newJsonSchemaF(JsonSchemaFactory.java:253)~[json-schema-validator-1.0.29.jar: na]

共有1个答案

凌永逸
2023-03-14

这可能是复制/粘贴错误,或者您的模式文件不是JSON模式,而是与JSON数据相同。

查看Camel文档,获取可与验证器一起使用的JSON模式文件的示例。

 类似资料:
  • 我有以下用例: 我的应用程序无法处理的消息,可能是由于与网络等相关的一些间歇性问题,正在写入kafka主题。 我希望使用cron/scheduled任务定期读取这些消息,然后处理它们。 到目前为止,我已经在我的弹跳靴中使用了KafkaListener来满足我与kafka相关的需求,并且运行良好。 但是,我无法找到一种方法来间歇性地使用KafkaListener阅读消息。 Spring有没有办法做到

  • 我有Kafka Streams java应用程序启动并运行。我试图使用KSQL创建简单的查询,并使用Kafka流来实现复杂的解决方案。我希望将KSQL和Kafka流作为Java应用程序运行。 我打算通过https://github.com/confluentinc/ksql/blob/master/ksqldb-examples/src/main/java/io/confluent/ksql/em

  • 我正在实现一个生成Kafka消息的过程,每个消息都应该有由模式注册表验证的模式。为了开发,我使用docker运行kafka和模式注册表,我的模式由模式注册表ui进行注册。 看起来我的模式没有被验证或者我缺少一些配置。我的生产者类有以下代码: 大多数时候,我会收到一个错误,如“Schema not found”,当没有引发此异常时,我的消息不会被验证,它只是将消息发送到另一个主题。 是否缺少任何类型

  • 我正在使用验证json模式。如果响应主体具有文件 如果响应正文有未在json模式中定义的EXTRA变量/值,则不会失败。如何使这个测试用例失败? 例如: 下面是具有预定义 JSON 架构的响应正文。 如果响应正文给出了额外的值,例如电子邮件/电话,那么它仍然在传递。我需要让它失败。这是我的测试用例,如果响应正文返回额外值,则失败。如何验证此测试用例?

  • 这是我从网站上获取的JSON代码。问题是此代码没有方括号,并且在数组中没有有效值,因此我不知道如何在android应用程序中使用此代码。 {"h0":{"id": 1081,"imgtitle":{"ar_AA":"",""fa_IR":"\u0644\u062d\u0638\u0647\u0631\u0633\u06cc\u062f\u0646...","en_GB":""},"imgtext"

  • 问题内容: 是否有任何PHP库可根据JSON模式验证JSON对象? 问题答案: 关于jsonschemaphpv,尽管它维护得不是很好,但是我们经常使用它并且可以正常工作。这是js验证程序的端口。它具有针对php和http://code.google.com/p/jsonschema/的完整测试套件。 猜猜是什么…它比js传递了更多的测试。至少在最后一次运行测试时。问题是该项目的结构不是很好,而且