في بنية الخدمات الصغيرة المعتمدة على الأحداث اليوم، تُعتبر Apache Kafka الخيار الافتراضي لتطبيقات البث. ومع ذلك، فإن إعداد Kafka للتطوير المحلي بالتزامن مع تطبيق Spring Boot الخاص بك يمكن أن يكون معقدًا، خاصة عند تكوينه للعمل محليًا.
spring-kafka هو حزمة مافن التي تدعم تكامل Kafka مع تطبيق Spring Boot. للعمل مع spring-kafka، نحتاج إلى الاتصال بمثيل Kafka. عادةً، خلال مرحلة التطوير، سنقوم ببساطة بتشغيل مثيل Kafka محلي وبناء التطبيق عليه. ولكن مع Docker Desktop والحاويات، فإن الأمور أسهل بكثير في الإعداد من تشغيل مثيل Kafka محلي. توجه هذه المقالة بنا خلال الخطوات اللازمة لإعداد حاوية Kafka المحلية مع تطبيق Spring Boot.
المتطلبات الأساسية
- نحتاج إلى إعداد Docker Desktop. للقيام بذلك، يمكننا الرجوع إلى هذه المقالة.
- تطبيق Spring Boot مع حزمة spring-kafka مُعدة.
تشغيل حاوية Kafka
لتشغيل حاوية Kafka، سنستخدم أولاً ملف docker-compose التالي:
version'3'
services
zookeeper
image confluentinc/cp-zookeeper latest
environment
ZOOKEEPER_CLIENT_PORT2181
ports
"2181:2181"
kafka
image confluentinc/cp-kafka latest
environment
KAFKA_ZOOKEEPER_CONNECT zookeeper2181
KAFKA_ADVERTISED_LISTENERS PLAINTEXT //localhost9092
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR1
ports
"9092:9092"
depends_on
zookeeper
يحتوي ملف docker-compose هذا على التكوينات لسحب حاوية Kafka واحتياجاتها، حاوية Zookeeper. تدير Zookeeper عقد وسطاء Kafka في الكتلة؛ يمكننا العثور على مزيد من التفاصيل حول ذلك في هذه المقالة.
لتسجيل الحاويات مع Docker Desktop، سنستخدم الأمر التالي:
docker-compose up -d
سيقوم هذا بسحب الصور المطلوبة وإطلاق الحاويات، وبمجرد إطلاق الحاويات، يمكنك رؤية الحاويات في Docker Desktop كما هو موضح أدناه:
الآن بعد أن أصبحت حاوية Kafka جاهزة، يمكننا إنشاء المواضيع المطلوبة باستخدام وحدة التحكم في Docker Desktop باستخدام الأمر التالي:
kafka-topics --create --topic user-notification --partitions 1 --replication-factor 1 --bootstrap-server localhost:9092
الآن بعد أن أصبحت الحاوية جاهزة وتم تنفيذ المتطلبات الأساسية اللازمة، يمكننا تشغيل تطبيق Spring Boot. بالنسبة لتطبيق Spring Boot، قم بتكوين عنوان bootstrap الخاص بـ Kafka كما هو موضح أدناه:
kafka.bootstrapAddress=localhost:9092
عند تشغيل تطبيق Spring Boot، يجب أن نرى السجلات المتعلقة بالاتصال مع Kafka، اعتمادًا على نوع تطبيق Spring Boot، سواء كان منتجًا أو مستهلكًا.
باتباع الخطوات الموضحة في المقالة، قمنا بإعداد بيئة تطوير محلية باستخدام حاوية Kafka وتطبيق Spring Boot.
Source:
https://dzone.com/articles/setting-up-local-kafka-container-for-spring-boot-application