As a follow up, I used this unit test which made me think that StatisticsBrokerPlugin is not activated:

[removed package and import lines]

public class MonitoringTest extends TestCase {
private String brokerURI = "vm://testBroker?broker.persistent=false";
   private boolean transacted = false;
   private int ackMode = Session.AUTO_ACKNOWLEDGE;
private Connection connection;
   private Session session;

   @Before
   public void setUp() throws Exception {
       initConnection();
       initSession();
   }
@After
   public void tearDown() throws Exception {
       try {
           if (session != null) {
               session.close();
           }
           if (connection != null) {
               connection.close();
           }
       } catch (Throwable ignore) {
           fail(ignore.getMessage());
       }
   }
public void testBrokerMonitoring() {
       String queueName = "ActiveMQ.Statistics.Broker";
       Queue replyTo = null;
       MessageConsumer consumer = null;
       MessageProducer producer = null;
       Queue testQueue = null;
       Message msg = null;
       MapMessage reply = null;

       try {
           replyTo = session.createTemporaryQueue();
           consumer = session.createConsumer(replyTo);
testQueue = session.createQueue(queueName); producer = session.createProducer(testQueue); msg = session.createMessage();
           msg.setJMSReplyTo(replyTo);
           producer.send(msg);
reply = (MapMessage) consumer.receive(2000);
           assertNotNull(reply);

for (Enumeration<?> e = reply.getMapNames();e.hasMoreElements();) {
             String name = e.nextElement().toString();
             System.out.println(name + "=" + reply.getObject(name));
           }
       } catch (JMSException e) {
           e.printStackTrace();
           fail(e.getMessage());
       }
   }

   private void initSession() throws JMSException {
       session = connection.createSession(transacted, ackMode);
   }

   private void initConnection() throws JMSException {
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerURI);
       connection = connectionFactory.createConnection();
       connection.start();
   }
}

This test should list statictics coming from the broker. The test is failing on the line, assertNotNull(reply);, since the reply is null.

-don

Don Santillan wrote:
Hello,

I am using activemq as a dependency in a web app. My web app is deployed to a jetty server which is run through maven by issuing "mvn jetty:run".

Of course, one part of the web app is to create and start a broker. I am doing this through ActiveMQConnectionFactory (as described at the last part of http://activemq.apache.org/how-do-i-embed-a-broker-inside-a-connection.html, titled "Using ActiveMQConnectionFactory"):

String brokerURI = "vm://testBroker?broker.persistent=false";
ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory(brokerURI);
Connection connection = cf.createConnection();
connection.start();

Now, since I am running my web web app through maven, and activemq is used as a library (not as a standalone app), I don't have an activemq.xml configuration file. So, I don't know where to activate/enable StatisticsBrokerPlugin as described at http://activemq.apache.org/statisticsplugin.html:

<broker ...>
  <plugins>
    statisticsBrokerPlugin/>
  </plugins>
</broker>

Also, since I am using ActiveMQConnectionFactory to create and start the broker, I can't take advantage of setting the plugin through BrokerService:

BrokerPlugin plugin = new StatisticsBrokerPlugin();
BrokerPlugin[] plugins = {plugin};

BrokerService broker = new BrokerService();
try {
  broker.addConnector(brokerURI);
  broker.setPlugins(plugins);
  broker.start();
} catch (Exception e) {
  e.printStackTrace();
}

Now, my questions are:
1. How will I be able to set the StatisticsBrokerPlugin with the above scenario? 2. Is there a way to get a reference to the broker to be able to set the plugin? 3. Is there a way to add and use activemq.xml if it is used as a library and run through maven? Set in pom.xml?

Please help. I really need this to work.

Thanks in advance.

-don

Reply via email to