本文介绍如何使用夸库开发微服务,这些微库使用在库伯奈斯集群中运行的 Apache Kafka。

Quarkus 支持微配置文件反应消息,以便与阿帕奇卡夫卡进行交互。有一个不错的指南使用Apache卡夫卡与反应消息,解释如何发送和接收消息,并从卡夫卡。

本指南包含有关如何通过 Docker 与 Docker 组合在本地运行 Kafka 的说明。虽然这可能是入门的最简单方法,但微服务开发人员的下一步通常是了解如何在库伯奈斯环境中访问 Apache Kafka 或托管 Kafka 服务。

选项1:阿帕奇卡夫卡在库伯内斯跑步

开源项目Strimzi提供容器图像和运算符,用于在库伯奈斯和红帽开放Shift上运行Apache Kafka。有一个不错的博客系列关于红帽开发者,描述如何使用Strimzi。要从应用程序访问它,有几个不同的选项,例如节点端口、OpenShift 路由、负载均衡器和入口。

有时,这些选项对于开发人员来说可能非常难受,特别是当您需要的是一个简单的开发环境来编写一些被动 hello 世界应用程序以开始时。在我的例子中,我想在我的 Minikube 群集中安装一个简单的 Kafka 服务器。

有关如何将 Strimzi 部署到 Minikube 的快速入门指南。遗憾的是,它无法解释如何从应用程序访问它。

根据这两篇文章,我写了一个简单的脚本,在不到5分钟内将卡夫卡部署到Minikube。该脚本是云本机启动项目的一部分。运行这些命令以尝试:

Java

 

xxxxxxx
1
17
9
1
$git克隆https//github.com/IBM/cloud-native-starter.git
2
$cd-本机-启动器/反应
3
$sh脚本/开始-迷你库贝.
4
$sh脚本/部署-卡夫卡.
5
$sh脚本/显示-URL

您可以在”卡夫卡”命名空间中找到所有资源。

要从夸尔库斯访问卡夫卡,必须配置卡夫卡连接器。在与 Kafka 相同的 Kubernetes 群集中运行 Quarkus 应用程序时,请使用”应用程序.属性”中的以下配置。”我的群集-卡夫卡-外部引导”是服务名称,”卡夫卡”命名空间和”9094″端口。

Java

 

xxxxxxx
1
1
卡夫卡.引导.服务器=我的-群集-卡夫卡-外部-引导

1px;”[mp.消息传入文章article创建.连接器=小锐卡夫卡

3
mp.消息传入文章article-创建..反序列化=组织阿帕奇.卡夫卡.常见序列化串序列化器

在本地开发 Quarkus 应用程序时,可通过 NodePort 访问 Minikube 中的 Kafka。在这种情况下,将 kafka.bootstrap.server 配置替换为以下 URL:

Java

 

xxxxxxx
1
1
$迷你库贝普=$迷你库贝ip
2
$nodeport=$kubectl获取svc我的-群集-卡夫卡-外部-引导-nkafka-忽略--- 找到-输出'jsonpath_.spec.ports][nodePort])
3
$回声$[迷你库比普]:$ [无驱逐]

选项 2:卡夫卡作为服务

大多数云提供商还托管托管卡夫卡服务ibm.com/catalog/services/event-streams”rel=”不跟随”目标=”_blank”=事件流是 IBM 云中的托管 Kafka 服务。有一个免费精简计划,它提供对多租户事件流群集中的单个分区的访问。所有你需要的是一个IBMID,这是免费的,你不需要信用卡。

由于大多数卡夫卡服务在生产中,事件流需要安全连接。此附加配置需要在”应用程序.属性”中再次定义。

Java

 

xxxxxxx
1
13
9