Camel K 教程入门

x33g5p2x  于2022-09-28 转载在 其他  
字(3.0k)|赞(0)|评价(0)|浏览(948)

本教程是 Apache****Camel K 的快速入门介绍。什么是 Apache Camel K?简而言之,Apache Camel K 是一个基于 Apache Camel 构建的轻量级集成框架,它在 Kubernetes 上原生运行,专为无服务器和微服务架构而设计。

Camel K 的想法非常简单:让开发人员在 Kubernetes 上原生使用企业集成模式 (EIP),并使用强大的 Camel DSL 来表达它们。由于 Camel K 需要使用 Kubernetes,我们将使用 minikube 进行测试(它与 OpenShift 相同)。

安装 Minikube 的详细过程在:https://minikube.sigs.k8s.io/docs/start/

第一步,启动 minikube:

$ minikube start

随着 Minikube 的运行,下一步是部署注册表。

$ minikube addons enable registry

要开始使用 Camel K,您需要“kamel” shell 工具,该工具可在最新版本的 camel-k-client 工具的发布页面中找到:https://github.com/apache/camel-k/releases

下载并解压缩存档。并将二进制文件“kamel”放在系统路径中。例如,在 /usr/bin 中。

现在,您可以继续安装:

$ kamel install

安装完成后,您应该会在 Kubernetes 的 pod 中看到 camel-k 操作符:

$ kubectl get pods 

NAME                                READY   STATUS    RESTARTS   AGE 
camel-k-operator-57bbcbd6dc-ndqj5   1/1     Running   0          6m34s

https://github.com/apache/camel-k/releases 中有很多可用的示例。例如,让我们运行一下 Sample.java

import org.apache.camel.builder.RouteBuilder;

public class Sample extends RouteBuilder {
  @Override
  public void configure() throws Exception {
    from("timer:tick").log("Hello Camel K!");
  }
}

为了运行这个示例骆驼路线,您可以使用“运行”选项。我们还将添加“–dev”标志以允许实时重新加载代码:

$ kamel run Sample.java --dev

骆驼之路即将开始:

[1] 2021-01-20 08:35:56,508 INFO  [io.quarkus] (main) camel-k-integration 1.3.0 on JVM (powered by Quarkus 1.10.3.Final) started in 2.123s.  [1] 2021-01-20 08:35:56,509 INFO  [io.quarkus] (main) Profile prod activated.  [1] 2021-01-20 08:35:56,511 INFO  [io.quarkus] (main) Installed features: [camel-bean, camel-core, camel-endpointdsl, camel-k-core, camel-k-loader-java, camel-k-runtime, camel-main, camel-support-common, camel-timer, cdi] [1] 2021-01-20 08:35:57,516 INFO  [route1] (Camel (camel-1) thread #0 - timer://tick) Hello Camel K!

请注意,您不需要在文件夹中指定任何依赖项规范,Camel K 会计算出来,并在构建过程中注入它。所以你只需要编写你的应用程序。

此外,由于我们在开发模式下运行,这允许用户以增量方式创建集成并立即进行“无构建”重新部署。例如,仅更改示例类中的日志消息:

public void configure() throws Exception {
  from("timer:tick").log("Hello Camel K just changed!");
}

当您保存代码时,应用程序将自动更新:

[1] 2021-01-20 08:43:49,811 INFO  [route1] (Camel (camel-1) thread #0 - timer://tick) Hello Camel K just changed!

我们可以更加冒险,我们将使用一个属性文件来定义消息的内容。让我们编辑一个名为 sample.properties 的文件来包含这个内容:

message=Hello World from Camel K!

并相应地更改 Sample.java 类:

import org.apache.camel.builder.RouteBuilder;

public class Sample extends RouteBuilder {
  @Override
  public void configure() throws Exception {
    from("timer:tick").log("{{message}}");
  }
}

为了使用外部属性文件,只需在启动时添加选项–property-file:

$ kamel run Sample.java --property-file sample.properties --dev

这是您的原始日志消息:

[1] 2021-01-20 08:48:29,496 INFO  [route1] (Camel (camel-1) thread #0 - timer://tick) Hello World from Camel K!

Camel-K 中的语言支持

Camel-K 不仅适用于 java。支持其他几种语言,例如:

  • Groovy (currently the preferred language for writing Camel K integration code)
  • Kotlin
  • Java
  • XML
  • JavaScript

看看 hello.groovy 的例子:

from("timer:tick?period=3s")   
   .setBody().constant("Hello from Camel K in Groovy!!!")   
     .to("log:message")

如您所见,代码更加简洁。要运行 Groovy 示例,您可以使用相同的命令行选项:

$ kamel run hello.groovy --dev

就是这样:

INFO  [message] (Camel (camel-1) thread #0 - timer://tick) Exchange[ExchangePattern: InOnly, BodyType: String, Body: Hello from Camel K in Groovy!!!]

我们只是简单地介绍了一些 Camel-K 快速入门。这是一个关于集成代码如何立即在云中运行的示例。不需要其他任何东西!查看 Camel-K 文档以了解更多信息:https://camel.apache.org/camel-k/latest/index.html

相关文章