2012-04-20 10 views
12

अपने आवेदन के संचालन की निगरानी के लिए, मैं कुछ अधिक इस्तेमाल किया "SQL कनेक्शन सत्यापन" के समान क्वेरीकैसंड्रा कनेक्शन के लिए स्वास्थ्य जांच (हेक्टर का उपयोग)?

का चयन करें 1 रहा हूँ;

हेक्टर ड्राइवर का उपयोग कर कैसंड्रा में। मैंने Cluster.getKnownPoolHosts() और .getConnectionManager() को देखने जैसी चीजों की कोशिश की है। GetActivePools()। लेकिन ऐसा लगता है कि उनकी स्थिति लगातार अद्यतन नहीं होती है, केवल तभी जब मैं वास्तव में एक प्रश्न के साथ कैसंद्रा तक पहुंचने का प्रयास करता हूं।

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

क्या मैं किसी भी तरह से वास्तविक क्वेरी चलाने के बिना अपने कनेक्शन पूल स्थिति को अद्यतन करने के लिए हेक्टर को मजबूर कर सकता हूं?

(BTW: CQL भी स्वीकार करता हूँ "का चयन करें 1" यह नहीं है कि एक वैध प्रश्न के रूप में।)

+0

क्या आपको इसका उत्तर मिला? मैं वही –

+0

करने की कोशिश कर रहा हूं हां, मुझे एक ऐसा दृष्टिकोण मिला जो मेरे लिए अच्छा काम करता प्रतीत होता है। नीचे जवाब देखें। – HansMari

उत्तर

4

समाधान मैं वर्तमान में उपयोग कर रहा हूँ, और जो सबसे मजबूत अब तक (कैसेंड्रा 1.1 के साथ परीक्षण हो रहा है

Query<String> query = Query.selectQuery("*", "system", null, 1, consistencyLevel, StringSerializer.get());

यह बिल्कुल मैं चाहता था क्योंकि यह एक 'असली' क्वेरी है, लेकिन दूसरी ओर यह किसी भी झूठे सकारात्मक नहीं देता नहीं है: और 1.2) "व्यवस्था" पर एक साधारण क्वेरी है। altogther इस सामान्य बनाने के लिए

SELECT now() FROM system.local; 

यह FROM खंड से छुटकारा पाने के लिए अच्छा हो सकता है, इस मामले में उपयोगकर्ता system के लिए उपयोग नहीं है:

+0

मैं गलत हो सकता हूं लेकिन मुझे लगता है कि यह दृष्टिकोण हमेशा एक ही नोड (ओं) को कॉल करेगा - स्थिरता के आधार पर आप हमेशा अपने आरएफ के 1, क्यू या सभी नोड्स कॉल करेंगे। यदि आप कनेक्शन सक्रिय हैं तो आप मॉनीटर चाहते हैं तो आप इसे कर सकते हैं, अगर आप रिंग स्थिति की निगरानी करना चाहते हैं तो मैं आपके जावा एप्लिकेशन –

+1

के अंदर नोडेटूल का उपयोग करूंगा। यह कनेक्शन जांच के रूप में है, कैसंड्रा क्लस्टर की ऑपरेशन चेक के रूप में नहीं। – HansMari

+0

@ हंसमारी, वास्तव में आप यह चेक कैसे करते हैं? क्या आप कुछ क्वेरी गुणों की जांच करते हैं? – CAMOBAP

13
CQL3 साथ

, मैं निम्न क्वेरी का उपयोग कर रहा किसी कारण से कुंजीपटल या local कॉलम परिवार। लेकिन जैसा कि अन्य उत्तरों के साथ, कम से कम यह झूठी सकारात्मक नहीं देना चाहिए।

+0

वास्तव में आप यह चेक कैसे करते हैं? क्या आप कुछ अपवाद पकड़ते हैं या QuerryResult ऑब्जेक्ट की जांच करते हैं? – CAMOBAP

+0

हां, बस यह जांचें कि यह कोई अपवाद नहीं फेंकता है। कोई यह भी सत्यापित कर सकता है कि क्वेरी वास्तव में कुछ लौटाती है, लेकिन मुझे वह अनावश्यक पाया गया। –

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