حبّة المراسلة المدفوعة مقابل المراسلة التفاعلية
استبدل حبّات JMS المدفوعة بالرسائل بـ MicroProfile Reactive Messaging لمعالجة أحداث أبسط.
مقارنة الكود
✕ Java EE
@MessageDriven(activationConfig = {
@ActivationConfigProperty(
propertyName = "destinationType",
propertyValue = "jakarta.jms.Queue"),
@ActivationConfigProperty(
propertyName = "destination",
propertyValue = "java:/jms/OrderQueue")
})
public class OrderMDB implements MessageListener {
@Override
public void onMessage(Message message) {
TextMessage txt = (TextMessage) message;
processOrder(txt.getText());
}
}
✓ MicroProfile 4+
@ApplicationScoped
public class OrderProcessor {
@Incoming("orders")
public void process(Order order) {
// automatically deserialized from
// the "orders" channel
fulfillOrder(order);
}
}
هل ترى مشكلة في هذا الكود؟ أخبرنا.
لماذا يتفوق الأسلوب الحديث
كود أدنى
دالة @Incoming واحدة تستبدل فئة MDB وواجهة MessageListener وتهيئة التنشيط.
مستقل عن الوسيط
بدّل موصلات Kafka أو AMQP أو JMS عبر التهيئة دون تغيير كود التطبيق.
ملائم للسحابة الأصلية
الضغط الخلفي للتدفقات التفاعلية وبيئة التشغيل الخفيفة يجعله مثالياً للنشر في حاويات.
الأسلوب القديم
Message-Driven Bean
الأسلوب الحديث
Reactive Messaging
منذ JDK
11
الصعوبة
متقدم
دعم JDK
حبّة المراسلة المدفوعة مقابل المراسلة التفاعلية
متاح
متاح منذ MicroProfile 4.0 / SmallRye Reactive Messaging
كيف يعمل
تتطلب حبّات Message-Driven تنفيذ MessageListener وتهيئة خصائص التنشيط وإلغاء تسلسل رسائل JMS يدوياً. تستخدم MicroProfile Reactive Messaging تعليقاً توضيحياً بسيطاً @Incoming على دالة تستقبل كائنات مكتوبة مباشرةً. تُخرَج تهيئة القناة مما يجعل الكود مستقلاً عن وسيط الرسائل وأسهل بكثير في الاختبار.
توثيق ذو صلة