List of usage examples for com.rabbitmq.client DefaultConsumer DefaultConsumer
public DefaultConsumer(Channel channel)
From source file:Rece.java
public static void main(String[] argv) throws Exception { ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); channel.queueDeclare(QUEUE_NAME, true, false, false, null); System.out.println(" [*] Waiting for messages. To exit press CTRL+C"); Consumer consumer = new DefaultConsumer(channel) { @Override/*from w w w . j av a 2 s .c om*/ public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { String message = new String(body, "UTF-8"); System.out.println(" [x] Received '" + message + "'"); } }; channel.basicConsume(QUEUE_NAME, true, consumer); }
From source file:RecieveMessage.java
public static void main(String[] argv) throws Exception { ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); channel.queueDeclare(QUEUE_NAME, false, false, false, null); System.out.println(" [*] Waiting for messages. To exit press CTRL+C"); Consumer consumer = new DefaultConsumer(channel) { //@Override public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { String message = new String(body, "UTF-8"); System.out.println(" [x] Received '" + message + "'"); }/* www . j av a 2 s . co m*/ }; channel.basicConsume(QUEUE_NAME, true, consumer); }
From source file:biospectra.classify.server.RabbitMQInputClient.java
License:Apache License
public synchronized void connect() throws IOException, TimeoutException { ConnectionFactory factory = new ConnectionFactory(); String hostname = this.conf.getRabbitMQHostnames().get(this.hostId); factory.setHost(hostname);//from w ww .j a v a 2 s. c om factory.setPort(this.conf.getRabbitMQPort()); factory.setUsername(this.conf.getRabbitMQUserId()); factory.setPassword(this.conf.getRabbitMQUserPwd()); factory.setRequestedHeartbeat(60); factory.setAutomaticRecoveryEnabled(true); this.connection = factory.newConnection(); this.shutdownListener = new ShutdownListener() { @Override public void shutdownCompleted(ShutdownSignalException sse) { LOG.error("connection shutdown", sse); } }; this.connection.addShutdownListener(this.shutdownListener); this.requestChannel = this.connection.createChannel(); this.responseChannel = this.connection.createChannel(); LOG.info("reader connected - " + hostname + ":" + this.conf.getRabbitMQPort()); this.responseChannel.basicQos(10); this.queueName = this.responseChannel.queueDeclare().getQueue(); this.consumer = new DefaultConsumer(this.responseChannel) { @Override public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { String message = new String(body, "UTF-8"); this.getChannel().basicAck(envelope.getDeliveryTag(), false); LOG.info("> " + message); ClassificationResponseMessage res = ClassificationResponseMessage.createInstance(message); ClassificationRequest ereq = null; synchronized (requestMap) { ereq = requestMap.get(res.getReqId()); if (ereq != null) { requestMap.remove(res.getReqId()); } } if (ereq == null) { LOG.error("cannot find matching request"); } else { ClassificationResponse eres = new ClassificationResponse(ereq, res); boolean responded = false; synchronized (ereq) { ClassificationRequest.RequestStatus status = ereq.getStatus(); if (status.equals(ClassificationRequest.RequestStatus.STATUS_UNKNOWN)) { ereq.setStatus(ClassificationRequest.RequestStatus.STATUS_RESPONDED); responded = true; } requestQueue.remove(ereq); } if (responded) { LOG.info("res : " + ereq.getReqId()); if (handler != null) { handler.onSuccess(eres.getReqId(), eres.getHeader(), eres.getSequence(), eres.getResult(), eres.getType(), eres.getTaxonRank(), eres.getTaxonName()); } synchronized (requestQueue) { requestQueue.notifyAll(); } } } } }; this.workerThread = new Thread(new Runnable() { @Override public void run() { try { responseChannel.basicConsume(queueName, consumer); LOG.info("Waiting for messages"); } catch (IOException ex) { LOG.error("Exception occurred while consuming a message", ex); } } }); this.workerThread.start(); this.reachable = true; this.timeoutThread = new Thread(new Runnable() { @Override public void run() { while (true) { boolean cont = false; if (requestQueue.size() > 0) { ClassificationRequest ereq = requestQueue.peek(); Date cur = new Date(); if (ereq != null && cur.getTime() - ereq.getSentTime() >= QUERY_TIMEOUT) { LOG.info("found timeout request"); //timeout boolean timeout = false; synchronized (ereq) { ClassificationRequest.RequestStatus status = ereq.getStatus(); if (status.equals(ClassificationRequest.RequestStatus.STATUS_UNKNOWN)) { ereq.setStatus(ClassificationRequest.RequestStatus.STATUS_TIMEOUT); timeout = true; } requestQueue.remove(ereq); } synchronized (requestMap) { requestMap.remove(ereq.getReqId()); } if (timeout) { LOG.info("timeout : " + ereq.getReqId()); handler.onTimeout(ereq.getReqId(), ereq.getHeader(), ereq.getSequence()); synchronized (requestQueue) { requestQueue.notifyAll(); } } cont = true; } } if (!cont) { try { Thread.sleep(1000); } catch (InterruptedException ex) { break; } } } } }); this.timeoutThread.start(); }
From source file:biospectra.classify.server.RabbitMQInputServer.java
License:Apache License
public synchronized void connect() throws IOException, TimeoutException { LOG.info("Connecting to - " + this.conf.getRabbitMQHostname() + ":" + this.conf.getRabbitMQPort()); ConnectionFactory factory = new ConnectionFactory(); factory.setHost(this.conf.getRabbitMQHostname()); factory.setPort(this.conf.getRabbitMQPort()); factory.setUsername(this.conf.getRabbitMQUserId()); factory.setPassword(this.conf.getRabbitMQUserPwd()); factory.setRequestedHeartbeat(60);/*from w w w. j ava2s .c om*/ factory.setAutomaticRecoveryEnabled(true); this.connection = factory.newConnection(); this.connection.addShutdownListener(new ShutdownListener() { @Override public void shutdownCompleted(ShutdownSignalException sse) { LOG.error("connection shutdown", sse); } }); this.requestChannel = this.connection.createChannel(); this.responseChannel = this.connection.createChannel(); LOG.info("connected."); this.requestChannel.basicQos(1); this.requestChannel.queueDeclare("request", false, false, true, null); this.responseChannel.addReturnListener(new ReturnListener() { @Override public void handleReturn(int replyCode, String replyText, String exchange, String routingKey, AMQP.BasicProperties properties, byte[] body) throws IOException { String message = new String(body, "UTF-8"); LOG.info("message not delivered to " + routingKey); LOG.info(message); } }); this.consumer = new DefaultConsumer(this.requestChannel) { @Override public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { String message = new String(body, "UTF-8"); this.getChannel().basicAck(envelope.getDeliveryTag(), false); if (handler != null) { ClassificationRequestMessage req = ClassificationRequestMessage.createInstance(message); handler.handleMessage(req, properties.getReplyTo()); } } }; this.workerThread = new Thread(new Runnable() { @Override public void run() { try { requestChannel.basicConsume("request", consumer); LOG.info("Waiting for messages"); } catch (IOException ex) { LOG.error("Exception occurred while consuming a message", ex); } } }); this.workerThread.start(); }
From source file:blocker.Blocker.java
/** * @param argv//w w w . jav a 2s . c o m */ public static void main(String[] argv) throws Exception { seconds = Integer.parseInt(argv[7]); ConnectionFactory factory = new ConnectionFactory(); factory.setHost(argv[0]); factory.setUsername(argv[2]); factory.setPassword(argv[3]); factory.setVirtualHost(argv[1]); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); channel.exchangeDeclare(argv[4], "direct", true); String queueName = channel.queueDeclare(argv[5], true, false, false, null).getQueue(); // exchange key channel.queueBind(queueName, argv[4], argv[6]); System.out.println(" [*] Waiting for messages. To exit press CTRL+C"); Consumer consumer = new DefaultConsumer(channel) { @Override public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { String message = new String(body, "UTF-8"); JSONParser parser = new JSONParser(); Thread.UncaughtExceptionHandler h = new Thread.UncaughtExceptionHandler() { @Override public void uncaughtException(Thread th, Throwable ex) { System.out.println("Uncaught exception: " + ex); } }; try { Object obj = parser.parse(message); JSONObject jobj = (JSONObject) obj; String IP = (String) jobj.get("clientip"); Thread t = new Thread(new BlockerThread(IP)); t.setUncaughtExceptionHandler(h); t.start(); } catch (ParseException ex) { Logger.getLogger(Blocker.class.getName()).log(Level.SEVERE, null, ex); } } }; channel.basicConsume(argv[5], true, consumer); }
From source file:cc.gospy.core.remote.rabbitmq.RemoteScheduler.java
License:Apache License
private void declareConsumers() throws IOException { for (String queueName : targetQueueNames) { channel.basicConsume(queueName, false, new DefaultConsumer(channel) { @Override//from w w w . j ava 2 s . c o m public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { if (isSuspend.get()) { channel.basicNack(envelope.getDeliveryTag(), false, true); } Task task = SerializationUtils.deserialize(body); tasks.put(task, envelope.getDeliveryTag()); checker.schedule(() -> { Task task0 = task; synchronized (tasks) { try { if (tasks.containsKey(task0)) { channel.basicNack(tasks.remove(task0), false, true); logger.warn( "Task {} pending timeout (not taken), re-add to default_task_queue.", task0); } else { synchronized (pendingTasks) { if (pendingTasks.containsKey(task0)) { channel.basicNack(pendingTasks.remove(task0), false, true); logger.warn( "Task {} pending timeout (no feedback), re-add to default_task_queue.", task0); } } } } catch (IOException e) { e.printStackTrace(); } } }, timeoutInSeconds, TimeUnit.SECONDS); } }); } }
From source file:cc.gospy.core.remote.rabbitmq.RemoteServiceProvider.java
License:Apache License
private void declareNewTaskConsumer() throws IOException { channel.basicConsume(NEW_TASK_QUEUE, true, new DefaultConsumer(channel) { @Override/*from w w w .j a v a 2 s . co m*/ public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { Task newTask = (Task) SerializationUtils.deserialize(body); if (newTask.isCheckSkipping() || taskFilter.test(newTask)) { if (duplicateRemover.exists(newTask)) { duplicateRemover.record(newTask); } else { if (newTask.getExpectedVisitInSeconds() == 0) { publish(newTask); } else { lazyTaskQueue.add(newTask); } } } } }); channel.basicConsume(NEW_LAZY_TASK_QUEUE, true, new DefaultConsumer(channel) { @Override public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { Task newTask = (Task) SerializationUtils.deserialize(body); if (newTask.isCheckSkipping() || taskFilter.test(newTask)) { lazyTaskQueue.add(newTask); } } }); }
From source file:ch.icclab.cyclops.consume.AbstractConsumer.java
License:Open Source License
/** * This is the body of message processing * @param channel where consumer should listen * @return consumer object/* w ww .j av a 2 s . c om*/ */ public Consumer handleDelivery(Channel channel) { return new DefaultConsumer(channel) { public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { // make sure encoding is correct String message = new String(body, "UTF-8"); // and let the message be consumed by client consume(message); } }; }
From source file:ch.icclab.cyclops.usecases.mcn.rabbitMQClient.McnRabbitMQClient.java
License:Open Source License
/** * This is the body of message processing * * @param channel where consumer should listen * @return consumer object//from w ww. j a v a 2 s . c o m */ private Consumer handleMessageDelivery(Channel channel) { return new DefaultConsumer(channel) { @Override public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { try { // make sure encoding is correct String message = new String(body, "UTF-8"); // now parse it MCNEvent mcnEvent = processMessage(message); if (mcnEvent != null) { // request empty container BatchPoints container = db.giveMeEmptyContainerForEvents( Loader.getSettings().getMcnSettings().getMCNDBEventsName()); // add a point container.point(mcnEvent.toPoint()); // let the database save it db.saveContainerToDB(container); } } catch (Exception ex) { System.err.println("Caught exception in client thread: " + ex.getMessage()); } } }; }
From source file:ch.icclab.cyclops.usecases.tnova.rabbitMQClient.TnovaRabbitMQClient.java
License:Open Source License
/** * This is the body of message processing * * @param channel where consumer should listen * @return consumer object//from www . ja va 2s. co m */ private Consumer handleMessageDelivery(Channel channel) { return new DefaultConsumer(channel) { @Override public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { try { // make sure encoding is correct String message = new String(body, "UTF-8"); // now parse it TnovaEvent tnovaEvent = processMessage(message); if (tnovaEvent != null) { // request empty container BatchPoints container = db.giveMeEmptyContainerForEvents( Loader.getSettings().gettNovaSettings().getTNovaDBEventsName()); // add a point container.point(tnovaEvent.toPoint()); // let the database save it db.saveContainerToDB(container); } } catch (Exception ex) { System.err.println("Caught exception in client thread: " + ex.getMessage()); } } }; }