blob: f0eb83ad24ab58909136fba1bdfb950d6b1f340f [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.qpid.example;
import javax.jms.Connection;
import javax.jms.Destination;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import org.apache.qpid.client.AMQAnyDestination;
public class Drain extends OptionParser
{
static final Option FOREVER = new Option("f",
"forever",
"ignore timeout and wait forever",
null,
null,
Boolean.class);
static final Option COUNT = new Option ("c",
"count",
"read c messages, then exit",
"COUNT",
"0",
Integer.class);
static
{
addOption(BROKER);
addOption(HELP);
addOption(TIMEOUT);
addOption(FOREVER);
addOption(COUNT);
addOption(CON_OPTIONS);
addOption(BROKER_OPTIONS);
}
public Drain(String[] args, String usage, String desc) throws Exception
{
super(args, usage, desc);
Connection con = createConnection();
con.start();
Session ssn = con.createSession(false,Session.AUTO_ACKNOWLEDGE);
Destination dest = new AMQAnyDestination(getAddress());
MessageConsumer consumer = ssn.createConsumer(dest);
Message msg;
long timeout = -1;
int count = 0;
int i = 0;
if (containsOp(TIMEOUT)) { timeout = Integer.parseInt(getOp(TIMEOUT))*1000; }
if (containsOp(FOREVER)) { timeout = 0; }
if (containsOp(COUNT)) { count = Integer.parseInt(getOp(COUNT)); }
while ((msg = consumer.receive(timeout)) != null)
{
System.out.println("\n------------- Msg -------------");
System.out.println(msg);
System.out.println("-------------------------------\n");
if (count > 0) {
if (++i == count) {
break;
}
}
}
consumer.close();
ssn.close();
con.close();
}
public static void main(String[] args) throws Exception
{
String u = "Usage: drain [OPTIONS] 'ADDRESS'";
String d = "Drains messages from the specified address.";
new Drain(args,u,d);
}
}