2009-01-12 15 views
6

मैंने इसे documentation में वर्णित Activemq.xml (ActiveMQ संस्करण 5.2.0) में कॉन्फ़िगर करके एक कतार स्थापित की है। हालांकि कतार JConsole में दिखाई दे रहा है (ActiveMQ: कतार लुकअप के साथ समस्या

Hashtable properties = new Hashtable(); 
properties.put(Context.INITIAL_CONTEXT_FACTORY, 
    "org.apache.activemq.jndi.ActiveMQInitialContextFactory"); 
properties.put(Context.PROVIDER_URL, "tcp://localhost:61616"); 

context = new InitialContext(properties); 

factory = (ConnectionFactory) context.lookup("ConnectionFactory"); 
connection = factory.createConnection(); 
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); 
queueName = "DUMMY"; // which can be either FOO.BAR or DUMMY 
dest = (Destination) context.lookup(queueName); 

मैं निम्न त्रुटि receveing ​​हूँ:

<destinations> 
    <queue physicalName="FOO.BAR" /> 
    <queue physicalName="DUMMY" /> 
</destinations> 

मैं इसे निम्न कोड के साथ (एक ही मेजबान पर) जावा से उपयोग करने की कोशिश कर रहा हूँ वृक्ष/org.apache.activemq/कतार):

javax.naming.NameNotFoundException: DUMMY 

कृपया मुझे बताएं कि मैं क्या गलत कर रहा हूं। बहुत बहुत शुक्रिया!

उत्तर

8

सबसे पहले आपको explicitly create any queues in the broker नहीं है हालांकि यह कोई नुकसान नहीं करता है।

ब्रोकर में उपलब्ध गंतव्यों को किसी भी प्रकार के जेएनडीआई नाम का उपयोग करके आपके लिए जेएनडीआई संदर्भ में ऑटो-जादुई रूप से मैप नहीं किया गया है।

आप यह explicitly as described here कर सकते हैं। आप JNDI के ऑटो जादुई आबादी चाहते हैं तो JNDI नाम (Dynamically creating destinations में वर्णित है) आप देखने

+0

यह बताने के लिए धन्यवाद कि विषय/कतार बनाने और इसे जेएनडीआई संदर्भ में मैप करने के बीच कोई अंतर है। मुझे संदेह है कि एक कतार/विषय कनेक्शन समस्या जिसे हम हल करने की कोशिश कर रहे हैं उसकी जड़ें इस धारणा में हैं कि निर्माण == जेएनडीआई पंजीकरण। –

0

हम्म .. अच्छी तरह से जब मैं एक कतार में सुनना चाहते हैं के रूप में dynamicQueues की JNDI नामकरण परंपरा/डमी का उपयोग मैं आमतौर पर ऐसा कुछ करता हूं। (javax.jms से आयात)

कतार कतार;

// Connect to ActiveMQ 
    ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(messageBrokerURL); 
    connection = factory.createConnection(); 
    session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); 

    // List to Dummy Queue 
    queue = session.createQueue("DUMMY"); 
    messageConsumer = session.createConsumer(queue); 
    messageConsumer.setMessageListener(queueHandler); 

    // Start the connection 
    connection.start(); 

और सुनिश्चित करें कि आपका हैंडलर MessageListener लागू करता है।

+0

धन्यवाद बर्नी। इसके साथ समस्या यह है कि आपके पास ActiveMQ विशिष्ट कोड है, जो ऊपर सूचीबद्ध हैं, वे अन्य जेएमएस कार्यान्वयन के साथ भी ठीक काम करते हैं, यानी ओपनजेएमएस के साथ। – MrG

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