在即将发布的Apache Camel 2.15中,我们使Camel更智能。 现在,它可以充当老师,并向您说明其配置方式以及这些选项的含义。
Camel可以做的第一课是告诉您如何配置所有端点以及这些选项的含义。
接下来我们要学习的课程是让Camel解释EIP的选项。
好了,一幅图片值得一千个单词,所以让我展示Apache Karaf的屏幕截图,您可以在其中使用新的endpoint-explain命令来解释如何配置端点。
Apache的屏幕截图来自我在Karaf中安装的SQL示例 。 此示例使用多个端点,其中一个端点每5秒触发一次。 从上面可以看到,该命令列出了端点uri:timer:// foo?period = 5s,然后在下面解释了该选项。 由于uri仅具有1个选项,因此仅列出了一个。 我们可以看到该选项被命名为period。 它的java类型很长。 json模式类型为整数。 我们可以看到该值为5s,在说明该值的说明的下方。
那么为什么列出两种类型呢? 想法是存在一种适合于工具等的类型,因为它对应于JSonSchema规范具有更简单的类型类别。 还列出了Java中的实际类型。
计时器端点还有更多选项,因此我们可以使用–verbose选项列出所有选项,如下所示:
说明端点功能也可以作为JMX或CamelContext上的Java API使用。 对于JMX,每个端点mbean都有一个说明操作,该操作返回具有上述数据的表格数据。 jconsole的以下屏幕截图对此进行了说明:
另外,在CamelContext MBean上有一个通用的explainEndpointJson操作,它可以解释所提供的任何任意uri。 因此,您可以解释Camel不使用的端点。
那么这是如何工作的呢?
在构建Apache Camel版本的过程中,我们为每个组件生成一个HTML和JSon模式,其中每个端点选项都以其名称,类型和描述进行记录。 对于枚举,我们列出了可能的值。
这是camel-sql组件的此类json模式的示例:
现在,要使其正常工作,该组件必须支持uri选项,这需要使用@UriEndpoint注释终结点 。 尽管Camel团队尚未迁移Camel版本中的所有160多个组件。 但是我们计划随着时间的推移迁移组件。
当然,现在有了新功能,它鼓励我们迁移所有组件。
那么我们从哪里获得文档? 好吧,它只是Java代码,所以您要做的就是为端点选项设置getter / setter。 添加@UriParam批注,然后为setter添加javadoc。 是的,我们将javadoc作为文档。 因此,它只是作为标准javadoc记录在一个地方,并在源代码中有记载。
我希望我们将来能自动为这些组件生成Camel网站文档,因此我们不必在其Wiki系统中单独进行维护。 但这将需要艰苦的工作才能实现。 但是最终我们应该到达那里,因此每个组件都记录在源代码中。 例如,对于每个具有所有组件文档的组件,我们可能都有一个readme.md,然后将端点选项从Camel内置系统自动注入到该readme.md文件中。 拥有readme.md文件还允许github用户使用github样式很好地浏览Camel组件文档!
那么下一步是什么?
hawtio Web控制台也将集成此功能,因此从Camel 2.15开始的用户可以立即在Web控制台中获取该信息。
然后开始在Spring / Blueprint用户的XML模式中包含有关EIP的文档。 并改进EIP的javadoc,因为这也成为文档的唯一来源。 然后,当人们在XML编辑器中开发其骆驼路线时,这将允许诸如Eclipse / IDEA / Netbeans之类的工具以及诸如此类的工具来显示文档,因为该文档在XSD中以xsd:documentation标记提供。
我们已经捕捉到一些想法,在CAMEL-7999票证中还有其他事情。 如果您有任何其他需要改进的想法,那么我们欢迎社区提供反馈。
翻译自: https://www.javacodegeeks.com/2014/11/apache-camel-please-explain-me-what-these-endpoint-options-mean.html