كيفية اغلاق برشاقة أسفل الربيع JMS MessageListenerAdapter

StackOverflow https://stackoverflow.com/questions/1028025

  •  06-07-2019
  •  | 
  •  

سؤال

ولدي معالج الرسالة، التي تستهلك من قائمة انتظار الدائرة والتي ترسل النتائج إلى قائمة الانتظار JMS آخر. يعيش معالج الرسالة في DefaultMessageListenerContainer الربيع. عندما تغلق الحاوية إلى أسفل، وأود لذلك لإنهاء التعامل مع أي طلبات أنها استهلكت بالفعل، وترسل النتائج. وفي الوقت نفسه، ينبغي أن لم تعد تستهلك أي رسائل جديدة من قائمة الانتظار الطلب.

والآن، مع عدم وجود أحكام خاصة اغلاق آمنة ApplicationContext.registerShutdownHook ()، وينتظر حاوية لأي بانتظار الدعاء listernerMethod للعودة، لكنها ليست بإرسال النتائج إلى قائمة انتظار الرد.

وماذا سيكون النهج المناسب للتأكد من أن الردود التي تنتجها معالجات تشغيل وترسل إلى قائمة انتظار الرد؟

هل كانت مفيدة؟

المحلول

وأعتقد أن الطريق للذهاب له لقيادة عن طريق واجهة DisposableBean أو الشرح @PreDestroy. الشيء IMHO الرئيسي هو عدم السماح الربيع اغلاق DMLC بل ترك هذا الذي يقوم به العنصر الذي هو على بينة من الرسائل حاليا "داخل النظام". وبهذه الطريقة يمكنك التوقف عن الاستماع لرسائل جديدة في انتظار رسائل نتم حاليا ليتم الانتهاء.

<ع> استخدام السمة depends-on على الإعلانات الفول يمكنك أيضا تحديد ترتيب الفاصوليا أن يغلق. الأحمر أكثر عن هذا في الربيع المرجعية وثائق .

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top