I'm sorry but I need more help to configure from Java an embedded broker...

In particular I 'm not able to set persitence in MySql, in fact when I
launch my example (that you can found after this message) I cannot see
messages in tables...
And, if I delete the three tables, my code don't reacreate them...

Javadoc of Brokerservice is poor and there isn't a page that explains the
configurations steps from directly Java code...

In my example I start a broker and create a consumer that send messages to a
queue...

The main question is "Why do the messages are stored on db"?
The code is the following:
import javax.jms.JMSException;

import org.apache.activemq.broker.BrokerService;
import org.apache.activemq.memory.UsageManager;
import org.apache.activemq.store.jdbc.JDBCPersistenceAdapter;
import org.apache.activemq.store.jdbc.adapter.MySqlJDBCAdapter;
import org.apache.commons.dbcp.BasicDataSource;



import webrainbow.util.debug.WrCheck;

public class EmbeddedBroker {
        
        private BrokerService m_broker;
        
        public EmbeddedBroker() {
                m_broker = new BrokerService();
                
                // Some configurations
                m_broker.setBrokerName("EmbeddedBroker_localhost");
                m_broker.setUseJmx(false);
                m_broker.setPersistent(true);

                // Setto il memoryManager
                UsageManager um = new UsageManager();
                // Setto il limite in byte
                um.setLimit(20000000);          
                m_broker.setMemoryManager(um);
                
                
                // Add connector
                try {
                        m_broker.addConnector("tcp://localhost:61616");
                } catch (Exception e) {
                        WrCheck.logError(e);
                }
        }
        
        
        public void go() {
                setPersistence();
                                
                try {
                        m_broker.start();
                } catch (Exception e) {
                        WrCheck.logError(e);
                }               
                
                startDeliveryToQueue();
        }
        
        
        private void setPersistence() {
                // Create a JDBC persistence adapter and set it to use the 
Oracle Adapter.
                JDBCPersistenceAdapter jdbcPersistence = new 
JDBCPersistenceAdapter();

                jdbcPersistence.setAdapter(new MySqlJDBCAdapter());

                // Create a basic datasource 
(org.apache.commons.dbcp.BasicDataSource) and 
                // set the JDBC properties on it.

                BasicDataSource bds = new BasicDataSource();

                
bds.setUrl("jdbc:mysql://localhost/activemq?relaxAutoCommit=true");

                bds.setDriverClassName("com.mysql.jdbc.Driver");

                bds.setUsername("root");

                bds.setPassword("");
                
                bds.setPoolPreparedStatements(true);

                // Set the datasource on the JDBC persistence adapter.
                jdbcPersistence.setDataSource(bds);
                
                m_broker.setPersistenceAdapter(jdbcPersistence);                
        }
        
        
        private void startDeliveryToQueue() {
                QueueProducer producer = null;
        try {
                producer = new QueueProducer("tcp://localhost:61616",
"ARCHIVER_QUEUE");
        } catch (JMSException e1) {
            WrCheck.logWarn(e1);            
        } 
        
        for(;;) {
            try {               
                        String time = 
String.valueOf(System.currentTimeMillis());                
                WrCheck.logInfo("Sending queue message --> <" + time + ">");    
            
                producer.sendMessage(time);
                
            } catch (JMSException ex) {
                WrCheck.logWarn(ex);
                                
                try {
                    WrCheck.logInfo("WebServerSimulator going to sleep...");
                    Thread.sleep(10 * 1000);
                    
                    producer.restart();
                } 
                catch (Exception e) {
                    WrCheck.logWarn(e);
                }
            }            
            catch (Exception exc) {
                WrCheck.logFatal(exc);                
            }
            
            try {
                Thread.sleep((long) (Math.random() * 3000));
            } catch (InterruptedException e) {
                WrCheck.logWarn(e);               
            }
        }
        }
        
        
        public static void main(String[] args) throws Exception {
                EmbeddedBroker eb = new EmbeddedBroker();
                eb.go();                
        }
}

Best regards.
-- 
View this message in context: 
http://www.nabble.com/Embedded-Broker---configuration-via-Java-tf3888599s2354.html#a11029347
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to