blob: 3b4f2fd50f56c5e4afbb2dcf712c06402f732ae5 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.activemq.bugs.embedded;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.Message;
import javax.jms.MessageProducer;
import javax.jms.Session;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.broker.BrokerService;
import org.apache.log4j.Logger;
public class EmbeddedActiveMQ
{
private static Logger logger = Logger.getLogger(EmbeddedActiveMQ.class);
public static void main(String[] args)
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BrokerService brokerService = null;
Connection connection = null;
logger.info("Start...");
try
{
brokerService = new BrokerService();
brokerService.setBrokerName("TestMQ");
brokerService.setUseJmx(true);
logger.info("Broker '" + brokerService.getBrokerName() + "' is starting........");
brokerService.start();
ConnectionFactory fac = new ActiveMQConnectionFactory("vm://TestMQ");
connection = fac.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination queue = session.createQueue("TEST.QUEUE");
MessageProducer producer = session.createProducer(queue);
for (int i = 0; i < 1000;i++) {
Message msg = session.createTextMessage("test"+i);
producer.send(msg);
}
logger.info(ThreadExplorer.show("Active threads after start:"));
System.out.println("Press return to stop........");
String key = br.readLine();
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try
{
br.close();
logger.info("Broker '" + brokerService.getBrokerName() + "' is stopping........");
connection.close();
brokerService.stop();
sleep(8);
logger.info(ThreadExplorer.show("Active threads after stop:"));
}
catch (Exception e)
{
e.printStackTrace();
}
}
logger.info("Waiting for list theads is greater then 1 ...");
int numTh = ThreadExplorer.active();
while (numTh > 2)
{
sleep(3);
numTh = ThreadExplorer.active();
logger.info(ThreadExplorer.show("Still active threads:"));
}
System.out.println("Stop...");
}
private static void sleep(int second)
{
try
{
logger.info("Waiting for " + second + "s...");
Thread.sleep(second * 1000L);
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}