2011-11-10 10 views
7

मैंने जावा एप्लिकेशन लिखा है जिसे डेटाबेस में 'कुछ' होने पर शुरू या जागृत किया जाना चाहिए। उदाहरण के लिए उपयोगकर्ता तालिका में डालने से सामान्य स्वागत, पासवर्ड, ... मेल भेजना चाहिए।postgresql - जावा - डेटाबेस में कुछ होने पर एप्लिकेशन जागृत

ऐसा करने के लिए सबसे अच्छा आम अभ्यास क्या है? मैं अपने आवेदन में इस तरह है कि यह कार्यान्वित लिख सकते हैं निम्न क्वेरी का हर दूसरा मान लीजिए:

select mail from user where mail_sent = false 

लेकिन इस मतदान है, और मैं इसे से बचने के लिए चाहते हैं। क्या डेटाबेस में बदलाव से शुरू किए गए मेरे जावा एप्लिकेशन (पुश) को शुरू या जागृत करने का कोई तरीका है?

चीयर्स!

+0

में मदद मिलेगी महत्वपूर्ण जानकारी: मैं केवल जावा आवेदन में से एक एक उदाहरण चाहते हैं। तो यदि दो उपयोगकर्ताओं को एक-दूसरे के बाद एक जोड़ा जाता है, तो मैं दूसरा उदाहरण शुरू नहीं करना चाहता हूं। यही है, क्रियाओं को क्रमशः एकल उदाहरण द्वारा संसाधित किया जाता है। –

उत्तर

2

पर NOTIFY

+1

बहुत उपयोगी। एक दोष यह प्रतीत होता है कि हमें अभी भी http://jdbc.postgresql.org/documentation/83/listennotify.html के अनुसार पोल करना होगा: "जेडीबीसी चालक की एक महत्वपूर्ण सीमा यह है कि इसे असीमित अधिसूचनाएं प्राप्त नहीं हो सकती हैं और बैकएंड को मतदान करना होगा जांचें कि क्या कोई अधिसूचना जारी की गई है। "बैकएंड 'के साथ यहां क्या मतलब है? क्या हम प्रत्येक एक्स सेकेंड में डेटाबेस से पूछताछ कर रहे हैं या इन-मेमोरी जेडीबीसी बैकएंड तक पहुंच रहे हैं? –

+2

हां, बैकएंड के साथ उनका मतलब डेटाबेस है। और हां, श्रोता कभी-कभी यह देखने के लिए डेटाबेस को मतदान करेगा कि क्या उसे अधिसूचना मिली है या नहीं। यदि आप वास्तविक असीमित घटनाएं चाहते हैं, तो आप फायरबर्ड देख सकते हैं। –

+1

pgsql के दस्तावेज़ों के अनुसार, वे असीमित हैं। यह केवल जेडीबीसी चालक है जिसमें असीमित अद्यतनों का समर्थन नहीं करने की सीमा है। शायद यह उनके रोडमैप पर है, मुझे लगता है। –

3

PostgreSQL में ट्रिगर भाषाओं के एक मेजबान है, जो लोगों के बीच पी एल/जावा है में लिखा जा सकता है एक नजर डालें। आप उन तालिकाओं पर ट्रिगर सेट कर सकते हैं जिनके लिए प्रासंगिक क्रियाओं (सम्मिलित करें, हटाएं, अपडेट करें ...) के लिए इस निगरानी की आवश्यकता होती है और ट्रिगर अधिसूचना का ख्याल रखता है। इसे इंटर-प्रोसेस संचार के कुछ रूपों की आवश्यकता हो सकती है, लेकिन यदि जावा में दोनों ट्रिगर और क्लाइंट लिखे गए हैं जो बहुत मुश्किल साबित नहीं होना चाहिए।

0

मुझे नहीं लगता कि आवेदन शुरू करना संभव है। हालांकि जब आपके पास कोई एप्लिकेशन चल रहा है, तो वह एप्लिकेशन ईवेंट सुनने के लिए सदस्यता ले सकता है। आप कुछ कार्यों के लिए घटनाओं को पोस्ट (सूचित) करने के लिए ट्रिगर्स का उपयोग कर सकते हैं।

जब एप्लिकेशन को घटना के बारे में अधिसूचित किया जाता है तो यह कुछ कार्यों के साथ प्रतिक्रिया दे सकता है। postgresql site for an example देखें।

+0

आपके कोड में कई स्थानों पर एकाधिक घटनाओं को सुनते समय सहायक क्रियान्वयन बहुत उपयोगी होता है। उसके लिए धन्यवाद! –

संबंधित मुद्दे