Dalam seni bina perkhidmatan mikro, komunikasi tak segerak antara perkhidmatan adalah penting untuk memastikan kebolehskalaan dan daya tahan sistem. Apache Kafka, platform penstriman yang diedarkan, telah menjadi salah satu alat paling popular untuk tujuan ini. Dalam siaran ini, kami akan meneroka cara menyediakan dan menyepadukan Kafka dengan Spring Boot untuk mengurus pertukaran mesej antara perkhidmatan dengan cekap dan mantap.
services: zookeeper: image: wurstmeister/zookeeper:3.4.6 ports: - "2181:2181" kafka: image: wurstmeister/kafka:latest ports: - "9092:9092" environment: KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
Dengan Kafka aktif dan berjalan, kita boleh meneruskan untuk mengkonfigurasi Spring Boot.
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> </dependency> </dependencies>
Seterusnya, konfigurasikan application.properties untuk menyambung ke Kafka:
spring.kafka.bootstrap-servers=localhost:9092 spring.kafka.consumer.group-id=group_id spring.kafka.consumer.auto-offset-reset=earliest
import org.springframework.kafka.core.KafkaTemplate; import org.springframework.stereotype.Service; @Service public class KafkaProducer { private final KafkaTemplate<String, String> kafkaTemplate; public KafkaProducer(KafkaTemplate<String, String> kafkaTemplate) { this.kafkaTemplate = kafkaTemplate; } public void sendMessage(String message) { kafkaTemplate.send("topic_name", message); } }
Kami boleh menambah titik akhir REST untuk menguji penghantaran mesej:
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @RestController public class MessageController { private final KafkaProducer kafkaProducer; public MessageController(KafkaProducer kafkaProducer) { this.kafkaProducer = kafkaProducer; } @PostMapping("/send") public void sendMessage(@RequestBody String message) { kafkaProducer.sendMessage(message); } }
import org.springframework.kafka.annotation.KafkaListener; import org.springframework.stereotype.Service; @Service public class KafkaConsumer { @KafkaListener(topics = "topic_name", groupId = "group_id") public void consume(String message) { System.out.println("Message received: " + message); } }
Dengan pelaksanaan ini, setiap kali mesej dihantar kepada Kafka, pengguna akan menerima dan memprosesnya.
Mengintegrasikan Apache Kafka dengan Spring Boot ialah gabungan yang berkuasa untuk mengurus komunikasi tak segerak dalam seni bina perkhidmatan mikro. Dalam siaran ini, kami menyediakan persekitaran, mencipta pengeluar dan pengguna, dan menguji aplikasi kami. Ini hanyalah permulaan – Kafka menawarkan banyak ciri lanjutan lain yang boleh anda terokai untuk menjadikan seni bina anda lebih berdaya tahan dan berskala. Saya harap tutorial ini membantu anda! Jika anda mempunyai sebarang soalan atau cadangan, sila tinggalkan komen di bawah.
Atas ialah kandungan terperinci Kawalan Pemesejan dengan Kafka dan Spring Boot: Panduan Praktikal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!