2011-09-03 6 views
5

मैं कोर हॉर्नैटक क्लाइंट में लगातार कतार बनाना चाहता हूं। समस्या यह है कि जब मैं सर्वर को कतार रोकता हूं और डेटा नष्ट हो जाएगा। कतार कैसे बनाये? मेरे कोड है:HornetQ 2.2.5 कोर क्लाइंट में कतार कैसे बनायी जाए?

Configuration configuration = new ConfigurationImpl(); 
configuration.setPersistenceEnabled(true); <<<< Make this true 

UnsatisfiedLinkError शायद इसलिए है क्योंकि आप AIO का चयन करें और LD_LIBRARY_PATH पर देशी पुस्तकालय नहीं था है:

import java.util.Date; 
import org.hornetq.api.core.TransportConfiguration; 
import org.hornetq.api.core.client.ClientConsumer; 
import org.hornetq.api.core.client.ClientMessage; 
import org.hornetq.api.core.client.ClientProducer; 
import org.hornetq.api.core.client.ClientSession; 
import org.hornetq.api.core.client.ClientSessionFactory; 
import org.hornetq.api.core.client.HornetQClient; 
import org.hornetq.api.core.client.ServerLocator; 
import org.hornetq.core.config.Configuration; 
import org.hornetq.core.config.impl.ConfigurationImpl; 
import org.hornetq.core.remoting.impl.invm.InVMAcceptorFactory; 
import org.hornetq.core.remoting.impl.invm.InVMConnectorFactory; 
import org.hornetq.core.server.HornetQServer; 
import org.hornetq.core.server.HornetQServers; 

public class EmbeddedExample 
{ 

    public static void main(final String[] args) 
    { 
     try 
     { 

     // Step 1. Create the Configuration, and set the properties accordingly 
     Configuration configuration = new ConfigurationImpl(); 
     configuration.setPersistenceEnabled(false); 
     configuration.setSecurityEnabled(false); 

     configuration.getAcceptorConfigurations().add(new TransportConfiguration(InVMAcceptorFactory.class.getName())); 

     // Step 2. Create and start the server 
     HornetQServer server = HornetQServers.newHornetQServer(configuration); 
     server.start(); 

     // Step 3. As we are not using a JNDI environment we instantiate the objects directly 
     ServerLocator serverLocator = HornetQClient.createServerLocatorWithoutHA(new TransportConfiguration(InVMConnectorFactory.class.getName())); 
     ClientSessionFactory sf = serverLocator.createSessionFactory();   

     // Step 4. Create a core queue   
     ClientSession coreSession = sf.createSession(false, false, false);  

     final String queueName = "queue.exampleQueue"; 

     coreSession.createQueue(queueName, queueName, true); 


     coreSession.close(); 

     ClientSession session = null; 

     try 
     { 

      // Step 5. Create the session, and producer 
      session = sf.createSession(); 

      ClientProducer producer = session.createProducer(queueName); 

      // Step 6. Create and send a message 
      ClientMessage message = session.createMessage(true); 

      final String propName = "myprop"; 

      message.putStringProperty(propName, "Hello sent at " + new Date()); 

      System.out.println("Producer:"); 
      System.out.println("StartDate: "+new Date()); 
      for (int i = 0; i < 100000; i++) 
      { 
        message = session.createMessage(true); // move it 
        message.putStringProperty(propName, "Message: " + i); 
        producer.send(message);  
      } 
      System.out.println("EndDate: "+new Date()); 
      // Step 7. Create the message consumer and start the connection 
      ClientConsumer messageConsumer = session.createConsumer(queueName); 

      session.start(); 

      // Step 8. Receive the message. 
      System.out.println("Consumer:"); 
      System.out.println("StartDate: "+new Date()); 

      //for (int i = 0; i <= 100000; i++)   
      int i=0; 
      while(true) 
      { 
       i++; 
       if(i == 10000){  
        i=0; 
        session.start(); 
        System.out.println("EndDate: "+new Date());       
       } 
       ClientMessage messageReceived = messageConsumer.receive(5000); 
       if (messageReceived!=null) messageReceived.acknowledge(); 
       //System.out.println(messageReceived.getStringProperty(propName)); 
      } 

     } 
     finally 
     { 
      // Step 9. Be sure to close our resources! 
      if (sf != null) 
      { 
       sf.close(); 
      } 

      // Step 10. Stop the server 
      server.stop(); 
     } 
     } 
     catch (Exception e) 
     { 
     e.printStackTrace(); 
     System.exit(-1); 
     } 
    } 
} 
+0

यहां कोड पेस्ट क्यों नहीं करें? - और क्या config.setPersistenceEnabled (false) में कतार के साथ कुछ नहीं किया जा रहा है? (अंधेरे में बस एक अनुमान) – stakx

+0

मैंने config.setPersistenceEnabled (true) के साथ प्रयास किया है; लेकिन यह मुझे "java.lang.UnsisfisfiedLinkError" अपवाद देता है। –

+1

क्या आप यहां कोड जोड़कर अपना मूल प्रश्न संपादित कर सकते हैं? भविष्य के संदर्भों के लिए यह बहुत बेहतर होगा .. क्योंकि पेस्ट की गारंटी नहीं है। आपके द्वारा बनाए गए जीबी हमेशा के लिए जीते रहेंगे। –

उत्तर

3

आप दृढ़ता अक्षम करते हैं, आप दृढ़ता की ज़रूरत नहीं होगी , या तो जर्नल सेट करें या मूल पुस्तकालय को लिनक्स सिस्टम में उपलब्ध कराएं।

configuration.setJournalType(JournalType.NIO); 
संबंधित मुद्दे