2011-09-03 31 views
5

Ben çekirdek hornetQ istemci kalıcı kuyruğu yapmak istiyorum. Sorun, sunucuyu sıraya aldığımda ve verilerin yok edileceği zamandır. Sıra nasıl yapılır? Benim kodudur: AIO'yu seçip LD_LIBRARY_PATH üzerinde yerli kütüphane yoktu çünküHornetQ 2.2.5 çekirdek istemcisinde nasıl bir sıra kalıcı hale getirilir?

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

UnsatisfiedLinkError muhtemelen şudur: kalıcılığını devre dışı bırakırsanız, sebat olmaz

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

Neden kodu buraya yapıştırın değil? - Ve config.setPersistenceEnabled (false), devam ettirilmediğinde kuyrukla bir ilgisi var mı? (Sadece karanlıkta bir tahmin) – stakx

+0

Ben config.setPersistenceEnabled (true) ile denedim; ama bana "java.lang.UnsatisfiedLinkError" istisnası veriyor. –

+1

Buradaki kodu ekleyerek orijinal sorunuzu düzenleyebilir misiniz? Gelecekte yapılan referanslar için çok daha iyi olurdu. Yaptığınız paste.bin hiçbir şeyin sonsuza kadar yaşayacağından emin olamazsınız. –

cevap

3

ya Journal'ı ayarlayın ya da bir Linux sisteminde yerel kütüphaneyi hazır bulundurun.

configuration.setJournalType(JournalType.NIO); 
İlgili konular