public static void Main(string[] args)
{
Console.WriteLine("Starting up Listener.");
String user = env("ACTIVEMQ_USER", "admin");
String password = env("ACTIVEMQ_PASSWORD", "password");
String host = env("ACTIVEMQ_HOST", "localhost");
int port = Int32.Parse(env("ACTIVEMQ_PORT", "61613"));
String destination = arg(args, 0, "event");
String brokerUri = "stomp:tcp://" + host + ":" + port + "?transport.useLogging=true";
NMSConnectionFactory factory = new NMSConnectionFactory(brokerUri);
IConnection connection = factory.CreateConnection(user, password);
connection.Start();
ISession session = connection.CreateSession(AcknowledgementMode.AutoAcknowledge);
IDestination dest = session.GetTopic(destination);
IMessageConsumer consumer = session.CreateConsumer(dest);
DateTime start = DateTime.Now;
long count = 0;
Console.WriteLine("Waiting for messages...");
while (true)
{
IMessage msg = consumer.Receive();
if (msg is ITextMessage)
{
ITextMessage txtMsg = msg as ITextMessage;
String body = txtMsg.Text;
if ("SHUTDOWN".Equals(body))
{
TimeSpan diff = DateTime.Now - start;
Console.WriteLine(String.Format("Received {0} in {1} seconds", count, (1.0*diff.TotalMilliseconds/1000.0)));
break;
}
else
{
if (count == 0)
{
start = DateTime.Now;
}
count ++;
if (count % 1000 == 0)
{
Console.WriteLine(String.Format("Received {0} messages.", count));
}
}
}
else
{
Console.WriteLine("Unexpected message type: " + msg.GetType().Name);
}
}
Console.WriteLine("Shutting down Listener.");
connection.Close();
}