Cách sử dụng Apache Kafka với Quarkus đơn giản

1095
01-02-2023
Cách sử dụng Apache Kafka với Quarkus đơn giản

Apache Kafka có thể tích hợp với hầu hết các ngôn ngữ được sử dụng hiện nay. Và trong bài viết này, chúng ta sẽ cùng đề cập đến việc tích hợp của Kafka với Java, cụ thể là Quarkus Java stack. Cùng Bizfly Cloud tìm hiểu nhé!

Về Apache Kafka

Cách dữ liệu được xử lý/tiêu thụ ngày nay và trước đây có sự khác biệt đáng kể. Trước đây, dữ liệu được lưu trữ trong cơ sở dữ liệu và được xử lý hàng loạt để lấy một số phân tích. Mặc dù cách tiếp cận này là chính xác, nhưng các nền tảng hiện đại ngày nay - điển hình là Apache Kafka - cho phép chúng ta xử lý dữ liệu theo thời gian thực khi dữ liệu đến hệ thống.

Apache Kafka có khả năng mở rộng và khả năng chịu lỗi cao, là công nghệ phù hợp với các ứng dụng hiệu suất cao. Kafka có thể được coi là sự thay thế cho một số hệ thống messaging thông thường như Java Message Service (JMS) và Advanced Message Queuing Protocol (AMQP).

Apache Kafka có thể tích hợp với hầu hết các ngôn ngữ được sử dụng hiện nay. Và trong bài viết này, chúng ta sẽ cùng đi sâu tìm hiểu cách sử dụng Apache Kafka với Java, cụ thể là Quarkus Java stack.

>> Tìm hiểu thêm: Kafka là gì? Giới thiệu tổng quan về Kafka

Sử dụng Apache Kafka với Quarkus - Ảnh 1.

Apache Kafka được phân tán được xây dựng nhằm mục đích lưu trữ

Về Quarkus

Quarkus là một khung công tác Java gốc trên nền tảng đám mây được phát triển bởi Red Hat . Quarkus hỗ trợ Máy ảo Java (JVM) cũng như trình biên dịch gốc (native compilation). Quarkus dựa trên tiêu chuẩn MicroProfile và một số tiêu chuẩn Jakarta EE. Nó có thời gian khởi động nhanh hơn và cần ít bộ nhớ hơn. Ngoài ra, Quarkus đã được thiết kế để trở thành một khung công tác ưu tiên cho container. Quarkus trở thành một nền tảng hiệu quả cho các môi trường serverless, Kubernetes và đám mây.

Quarkus được thiết kế để hoạt động với các tiêu chuẩn, framework và thư viện Java phổ biến như Eclipse MicroProfile và Spring, cũng như Apache Kafka, RESTEasy (JAX-RS), Hibernate ORM (JPA), Spring, Infinispan, Camel, v.v.

Quarkus sử dụng các enterprise-grade framework nổi tiếng được hỗ trợ bởi các tiêu chuẩn/thông số kỹ thuật và làm cho chúng có thể biên dịch thành tệp nhị phân bằng GraalVM.

Sử dụng Apache Kafka với Quarkus - Ảnh 2.

Quarkus là một khung công tác Java gốc trên nền tảng đám mây

Tích hợp Apache Kafka trong Quarkus

Dưới đây là các bước tích hợp Apache Kafka trong Quarkus đơn giản nhất:

Bước 1: Tạo dự án của bạn

Truy cập https://code.quarkus.io và điền vào các chi tiết dự án cần thiết như group id và artifact id. Chọn các dependencies sau từ danh sách:

  • SmallRye reactive messaging
  • Resteasy reactive jackson
  • Hibernate validator
Tích hợp Apache Kafka trong Quarkus

Nhấp vào Generate your application, tải xuống dự án dưới dạng tệp zip, giải nén và tải nó trong IDE của bạn. Cấu trúc dự án sẽ trông như thế này trong IDE:

Sử dụng Apache Kafka với Quarkus - Ảnh 4.

Bước 2: Tạo model object

Ở Kafka, chúng ta sản xuất và tiêu thụ các record. Một record chứa một key và một value. Chúng ta sẽ tạo một Employee object - object này sẽ được sản xuất và tiêu thụ.

Sử dụng Apache Kafka với Quarkus - Ảnh 5.

Bước 3: Tạo producer

Thêm một class mới EmployeeProducer theo đoạn code dưới đây:

Sử dụng Apache Kafka với Quarkus - Ảnh 6.

Hãy decode class này. Chúng ta đã thêm annotation @ApplicationScoped trên class, điều đó có nghĩa là một instance sẽ chỉ được tạo một lần trong suốt thời gian của toàn bộ ứng dụng. Bên trong class, chúng ta đã thêm một Emitter chịu trách nhiệm gửi message đến một channel. Emitter được gắn vào movies-out channel và sẽ gửi message tới Kafka. Chúng ta có một method createEmployee sẽ gửi các Record object của Employee dưới dạng cặp key-value.

Bước 4: Tạo consumer

Ở đây, chúng ta sẽ tạo một consumer EmployeeConsumer cho sự kiện chúng ta đã publish ở trên.

Sử dụng Apache Kafka với Quarkus - Ảnh 7.

Chúng ta đang sử dụng @Incoming annotation để yêu cầu Quarkus gọi receive method cho mọi record nhận được từ channel employee-in.

Bước 5: Định cấu hình Kafka và các channel

Trong reactive messaging, chúng ta gửi và nhận message từ các channel. Các channel này được map tới nền tảng messaging cơ bản bằng cách sử dụng cấu hình. Trong ứng dụng của mình, chúng ta đã sử dụng employee-in và employee-out channel để messaging. Chúng ta sẽ định cấu hình các channel này trong tệp application. properties.

Sử dụng Apache Kafka với Quarkus - Ảnh 8.

Vì chúng ta có một object để gửi làm giá trị nên chúng ta đã tạo một serializer và deserializer tùy chỉnh để gửi và nhận message.

Bước 6: REST endpoint để gửi message

Để gọi cho producer và gửi Employee object dưới dạng message, hãy tạo một endpoint sẽ gọi createEmployee method.

Sử dụng Apache Kafka với Quarkus - Ảnh 9.

Bước 7: Thiết lập Kafka

Tạo tệp docker-compose.yaml vào thư mục gốc và thêm nội dung sau:

Sử dụng Apache Kafka với Quarkus - Ảnh 10.

Bước 8: Chạy ứng dụng

Chạy lệnh sau trong terminal:

docker-compose up -d

Zookeeper và Kafka bắt đầu hoạt động. Chạy lệnh sau trong terminal:

./mvnw quarkus:dev

Ứng dụng sẽ bắt đầu ở dev mode. Trong một terminal khác, hãy thực hiện một số HTTP request:

curl -X POST \ http://localhost:8080/employee \ -H 'cache-control: no-cache' \ -H 'content-type: application/json' \ -H 'postman-token: 00fb55a5-7c90-af25-b1f4-9aa74a445405' \ -d '{ "firstName":"Vimal", "lastName":"Kumar", "empCode":"1823" }'

Sau khi nhận được message, bạn sẽ có thể thấy như sau:

Sử dụng Apache Kafka với Quarkus - Ảnh 14.

*Application code có thể tìm thấy ở đây .

Với các thao tác trên, bạn có thể dễ dàng kết nối một ứng dụng Quarkus với Apache Kafka và bắt đầu tạo cũng như sử dụng các message/event từ một topic. Đừng quên theo dõi các bài viết tiếp theo của Bizfly Cloud để cập nhật thêm nhiều kiến thức mới nhé. Chúc các bạn thao tác thành công!

Bizfly Cloud là nhà cung cấp dịch vụ điện toán đám mây với chi phí thấp, được vận hành bởi VCCorp.

Bizfly Cloud là một trong 4 doanh nghiệp nòng cốt trong "Chiến dịch thúc đẩy chuyển đổi số bằng công nghệ điện toán đám mây Việt Nam" của Bộ TT&TT; đáp ứng đầy đủ toàn bộ tiêu chí, chỉ tiêu kỹ thuật của nền tảng điện toán đám mây phục vụ Chính phủ điện tử/chính quyền điện tử.

Độc giả quan tâm đến các giải pháp của Bizfly Cloud có thể truy cập tại đây.

DÙNG THỬ MIỄN PHÍ và NHẬN ƯU ĐÃI 3 THÁNG tại: Manage.bizflycloud

SHARE