/*****************************************************************************
*
* Copyright (C) Zenoss, Inc. 2010-2011, all rights reserved.
*
* This content is made available according to terms specified in
* License.zenoss under the directory where your Zenoss product is installed.
*
****************************************************************************/
package org.zenoss.amqp.samples;
import java.net.URISyntaxException;
import java.util.concurrent.TimeUnit;
import org.zenoss.amqp.AmqpException;
import org.zenoss.amqp.AmqpServerUri;
import org.zenoss.amqp.Channel;
import org.zenoss.amqp.Connection;
import org.zenoss.amqp.ConnectionFactory;
import org.zenoss.amqp.Consumer;
import org.zenoss.amqp.Message;
import org.zenoss.amqp.ProtobufConverter;
import org.zenoss.protobufs.zep.Zep.Event;
import org.zenoss.protobufs.zep.Zep.Signal;
public class ConsumerTest {
public static void main(String[] args) throws AmqpException, InterruptedException, URISyntaxException {
if (args.length < 1) {
System.err.println("Usage: ConsumerTest <AmqpServerUri>");
System.exit(1);
}
AmqpServerUri uri = new AmqpServerUri(args[0]);
long delay = 60;
Connection conn = null;
Channel channel = null;
try {
conn = ConnectionFactory.newInstance().newConnection(uri);
channel = conn.openChannel();
channel.declareQueue(ProducerTest.QUEUE_EVENTS);
Consumer<com.google.protobuf.Message> consumer = channel
.createConsumer(ProducerTest.QUEUE_EVENTS,
new ProtobufConverter(Event.getDefaultInstance(),
Signal.getDefaultInstance()));
Message<com.google.protobuf.Message> msg;
while ((msg = consumer.nextMessage(delay, TimeUnit.SECONDS)) != null) {
if (msg.getBody() instanceof Event) {
System.out.println("Received event: " + msg.getBody());
} else if (msg.getBody() instanceof Signal) {
System.out.println("Received signal: " + msg.getBody());
}
consumer.ackMessage(msg);
}
System.out.printf(
"No messages received in last %ds, closing connection%n",
delay);
} finally {
if (channel != null) {
try {
channel.close();
} catch (Exception e) {
}
}
if (conn != null) {
try {
conn.close();
} catch (Exception e) {
}
}
}
}
}