Skip to content

9.3.1 Cấu hình Spring để sử dụng Kafka cho hệ thống nhắn tin

Để bắt đầu sử dụng Kafka cho hệ thống nhắn tin, bạn cần thêm các dependency phù hợp vào cấu hình build của mình. Tuy nhiên, khác với JMS và RabbitMQ, Kafka không có một Spring Boot starter chính thức. Đừng lo, bạn chỉ cần một dependency duy nhất như sau:

html
<dependency>
  <groupId>org.springframework.kafka</groupId>
  <artifactId>spring-kafka</artifactId>
</dependency>

Dependency này sẽ mang toàn bộ những gì bạn cần để tích hợp Kafka vào project. Hơn nữa, sự có mặt của nó sẽ kích hoạt tính năng autoconfiguration của Spring Boot dành cho Kafka, điều này bao gồm việc tạo một KafkaTemplate trong Spring application context. Bạn chỉ cần inject KafkaTemplate và có thể bắt đầu gửi và nhận tin nhắn.

Tuy nhiên, trước khi bắt đầu gửi và nhận tin nhắn, bạn nên lưu ý một vài thuộc tính hữu ích khi làm việc với Kafka. Cụ thể, KafkaTemplate mặc định kết nối tới một Kafka broker chạy trên localhost và lắng nghe ở cổng 9092.

Việc chạy một Kafka broker cục bộ trong quá trình phát triển ứng dụng là điều hoàn toàn ổn, nhưng khi chuyển sang môi trường production, bạn cần cấu hình lại địa chỉ host và cổng khác.

CÀI ĐẶT MỘT CỤM KAFKA Bạn sẽ cần có một cụm Kafka sẵn sàng nếu muốn chạy các ví dụ trong chương này. Tài liệu Kafka tại https://kafka.apache.org/quickstart là một nơi tuyệt vời để bắt đầu tìm hiểu cách chạy Kafka cục bộ trên máy của bạn.

Thuộc tính spring.kafka.bootstrap-servers được dùng để thiết lập địa chỉ của một hoặc nhiều Kafka server nhằm tạo kết nối ban đầu đến cụm Kafka. Ví dụ, nếu một trong các Kafka server trong cụm đang chạy tại kafka.tacocloud.com và lắng nghe ở cổng 9092, bạn có thể cấu hình trong YAML như sau:

yaml
spring:
  kafka:
    bootstrap-servers:
    - kafka.tacocloud.com:9092

Lưu ý rằng spring.kafka.bootstrap-servers là dạng số nhiều và chấp nhận danh sách nhiều server. Do đó, bạn có thể cung cấp nhiều Kafka server trong cụm, như ví dụ sau:

yaml
spring:
  kafka:
    bootstrap-servers:
    - kafka.tacocloud.com:9092
    - kafka.tacocloud.com:9093
    - kafka.tacocloud.com:9094

Các cấu hình này dành cho các Kafka bootstrap server trên host tên kafka.tacocloud.com. Nếu bạn đang chạy cụm Kafka cục bộ (điều thường thấy trong giai đoạn phát triển), bạn có thể dùng localhost, như ví dụ sau:

yaml
spring:
  kafka:
    bootstrap-servers:
    - localhost:9092

Với Kafka đã được cấu hình trong project, giờ bạn đã sẵn sàng để gửi và nhận tin nhắn. Chúng ta sẽ bắt đầu bằng cách gửi các đối tượng TacoOrder đến Kafka bằng KafkaTemplate.

Released under the MIT License.