Spring Pulsar؛ انتقال به Apache Pulsar و انتشار 3.0.0-M1

چرا مهم است

اگر از Spring Pulsar استفاده می‌کنی، نسخه 2.0.8 آخرین نسخه تیم Spring است و به‌روزرسانی دیگری از این تیم نمی‌گیرد. برای دریافت اصلاحات آینده باید انتقال به پروژه جدید و تغییر ‌ها را در نظر بگیری.

قبل از خواندن، این‌ها را بدان۵ مفهوم
dependency

کتابخانه یا بسته‌ای که برنامه برای ساخت یا اجرا به آن وابسته است.

در حال نگارش: dependency

Maven coordinates

مشخصات شناسایی یک بسته در Maven که معمولاً شامل groupId،؜ artifactId و نسخه است.

در حال نگارش: Maven coordinates

client

نرم‌افزار یا کتابخانه‌ای که برای استفاده از خدمات یک سامانه به آن متصل می‌شود و درخواست می‌فرستد.

در حال نگارش: client

broker

بخشی از سامانه پیام‌رسانی که پیام‌ها را از تولیدکننده دریافت می‌کند و در اختیار مصرف‌کننده قرار می‌دهد.

در حال نگارش: broker

auto-configuration

سازوکاری برای تنظیم خودکار بخش‌های برنامه بر اساس کتابخانه‌های موجود و تنظیمات تعریف‌شده.

در حال نگارش: auto-configuration

پروژه Spring for Apache Pulsar،؜ معروف به Spring Pulsar،؜ به Apache Pulsar منتقل شده و با نام Apache Pulsar support for Spring ادامه پیدا می‌کند. نخستین انتشار آن، نسخه 3.0.0-M1،؜ در Maven Central در دسترس است. شماره 3.0.0 برای نشان‌دادن تداوم مسیر Spring Pulsar 2.x انتخاب شده است.

کد سه بخش که پیش‌تر در repository‌های جداگانه بود، اکنون در apache/pulsar-spring قرار دارد: کتابخانه‌های Spring Pulsar،؜ بخش starter و auto-configuration مربوط به Apache Pulsar در Spring Boot،؜ و binder مربوط به Apache Pulsar در Spring Cloud Stream. توسعه، رفع bug،؜ پشتیبانی و انتشار نسخه‌های بعدی در پروژه Apache Pulsar انجام می‌شود.

نسخه 2.0.8 آخرین انتشار تیم Spring است و از این تیم به‌روزرسانی دیگری دریافت نمی‌کند. برنامه‌های فعلی می‌توانند فعلاً از آن استفاده کنند؛ اما اصلاحات و قابلیت‌های آینده در artifact‌های جدید عرضه می‌شوند. نسخه 3.0.0-M1 یک انتشار milestone است و پروژه از کاربران خواسته آن را آزمایش کنند.

برای انتقال، Maven coordinates تغییر کرده و همه artifact‌ها از group ID برابر با org.apache.pulsar استفاده می‌کنند. برای نمونه، org.springframework.pulsar:spring-pulsar به org.apache.pulsar:pulsar-spring تغییر کرده است. dependency‌های جدید باید جایگزین قبلی‌ها شوند، نه اینکه کنار آن‌ها اضافه شوند؛ تا auto-configuration و binder قبلی هم‌زمان روی classpath باقی نمانند. Java package‌ها نیز به مسیرهای جدید زیر org.apache.pulsar.spring منتقل شده‌اند.

Spring Boot نسخه artifact‌های جدید را مدیریت نمی‌کند؛ بنابراین باید نسخه هر dependency مشخص شود یا pulsar-spring-bom وارد شود. برنامه‌های Spring Boot همچنین باید pulsar.version را تنظیم کنند. نمونه منتشرشده مقدار 5.0.1 را برای آن دارد و تنظیم netty.version روی 4.2.20.Final نیز توصیه شده است.

این انتشار به client نسخه 5.0.x نیاز دارد که با نسخه‌های قدیمی‌تر broker سازگار است؛ بنابراین ارتقای broker لازم نیست. به‌جای pulsar-client-all از artifact‌های unshaded استفاده می‌شود؛ Netty و Jackson اکنون dependency‌های معمول برنامه‌اند و class‌های org.apache.pulsar.shade دیگر در دسترس نیستند. پشتیبانی مشخص از API جدید client نسخه v5 هنوز اضافه نشده است.

PulsarTemplate،؜ @PulsarListener،؜ @PulsarReader،؜ auto-configuration و binder حفظ شده‌اند. تنظیمات spring.pulsar.* و spring.cloud.stream.pulsar.* نیز تغییر نکرده‌اند و پروژه همچنان با مجوز Apache License, Version 2.0 به‌صورت open source ادامه دارد.

نکته کلیدی

هنگام انتقال، ‌های جدید را جایگزین قبلی‌ها کن، نه اینکه کنارشان اضافه کنی. نسخه آن‌ها را هم صریح مشخص کن؛ Spring Boot نسخه بسته‌های جدید را مدیریت نمی‌کند.

خواندن مقاله اصلی (در زبانه‌ی جدید باز می‌شود)
برچسب‌ها (۴)