Example usage for com.rabbitmq.client Channel basicConsume

List of usage examples for com.rabbitmq.client Channel basicConsume

Introduction

In this page you can find the example usage for com.rabbitmq.client Channel basicConsume.

Prototype

String basicConsume(String queue, boolean autoAck, Consumer callback) throws IOException;

Source Link

Document

Start a non-nolocal, non-exclusive consumer, with a server-generated consumerTag.

Usage

From source file:dk.cphbusiness.group11.Translators.PoorBankWS.TranslatorPoorBankWS.java

public void run() throws Exception {
    ConnectionFactory factory = new ConnectionFactory();
    factory.setHost("datdb.cphbusiness.dk");
    Connection connection = factory.newConnection();
    Channel channel = connection.createChannel();

    channel.exchangeDeclare(RECEIVING_QUEUE, "fanout");
    String queueName = channel.queueDeclare(RECEIVING_QUEUE, false, false, false, null).getQueue();
    channel.queueBind(queueName, RECEIVING_QUEUE, "");
    System.out.println("Waiting for messages on queue: " + RECEIVING_QUEUE);

    QueueingConsumer consumer = new QueueingConsumer(channel);
    channel.basicConsume(queueName, true, consumer);

    while (this.isRunning) {
        QueueingConsumer.Delivery delivery = consumer.nextDelivery();
        String message = new String(delivery.getBody());

        System.out.println("Received '" + message + "'");

        this.parseAndProcessXmlMessage(message);
    }//  www .j  av a  2s. c o  m
}

From source file:dreamteamjson.DreamTeamJSON.java

/**
 * @param args the command line arguments
 * @throws java.io.IOException/*from  ww w.j  a va  2 s . c o m*/
 */
public static void main(String[] args) throws IOException {

    ConnectionFactory factory = new ConnectionFactory();
    factory.setHost("datdb.cphbusiness.dk");
    factory.setUsername("Dreamteam");
    factory.setPassword("bastian");
    Connection connection = factory.newConnection();
    Channel listeningChannel = connection.createChannel();
    Channel sendingChannel = connection.createChannel();

    listeningChannel.queueDeclare(LISTENING_QUEUE_NAME, false, false, false, null);
    System.out.println(" [*] Waiting for messages. To exit press CTRL+C");

    Consumer consumer = new DefaultConsumer(listeningChannel) {
        @Override
        public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties,
                byte[] body) throws IOException {
            message = new String(body, "UTF-8");
            System.out.println(" [x] Received '" + message + "'");

            Message m = gson.fromJson(message, Message.class);
            System.out.println(m.toString());

            double interestRate = 14;

            if (m.creditScore > 600) {
                interestRate -= 4.5;
            } else if (m.creditScore < 601 && m.creditScore > 500) {
                interestRate -= 2.7;
            } else if (m.creditScore < 501 && m.creditScore > 400) {
                interestRate -= 0.9;
            }

            int durationCut = m.loanDuration / 360;

            interestRate -= (durationCut * 0.18);

            double amountCut = m.loanAmount / 100000;

            interestRate -= (amountCut * 0.18);

            // Insert bank logic

            String loanResponse = "{\"interestRate\":" + interestRate + ",\"ssn\":" + m.ssn + "}";

            sendingChannel.queueDeclare(SENDING_QUEUE_NAME, false, false, false, null);
            sendingChannel.basicPublish("", SENDING_QUEUE_NAME, null, loanResponse.getBytes());
        }
    };
    listeningChannel.basicConsume(LISTENING_QUEUE_NAME, true, consumer);

}

From source file:dreamteamxmltranslator.Translator.java

public static void main(String[] args) throws IOException {

    ConnectionFactory factory = new ConnectionFactory();
    factory.setHost("datdb.cphbusiness.dk");
    factory.setUsername("Dreamteam");
    factory.setPassword("bastian");
    Connection connection = factory.newConnection();
    Channel channel = connection.createChannel();

    channel.queueDeclare(LISTENING_QUEUE_NAME, false, false, false, null);
    channel.queueBind(LISTENING_QUEUE_NAME, EXCHANGE_NAME, "DreamTeamBankXML");

    System.out.println(" [*] Waiting for messages. To exit press CTRL+C");

    Consumer consumer = new DefaultConsumer(channel) {
        @Override/*from  w ww .j a  v  a 2  s.  c  o m*/
        public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties,
                byte[] body) throws IOException {
            try {
                message = new String(body, "UTF-8");
                System.out.println(" [x] Received '" + message + "'");

                String[] arr = message.split(",");
                tester(arr);
            } catch (IOException_Exception ex) {
                Logger.getLogger(Translator.class.getName()).log(Level.SEVERE, null, ex);
            }

        }
    };
    channel.basicConsume(LISTENING_QUEUE_NAME, true, consumer);

}

From source file:edu.iit.rabbitmq.Receive.java

public String getMessage() throws Exception {
    Channel channel = getChannel();
    QueueingConsumer consumer = new QueueingConsumer(channel);
    channel.basicConsume(QUEUENAME, true, consumer);
    QueueingConsumer.Delivery delivery = consumer.nextDelivery();
    channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
    String message = new String(delivery.getBody(), "UTF-8");
    return message;
}

From source file:edu.jhu.pha.vospace.jobs.JobsProcessorQueuedImpl.java

License:Apache License

@Override
public void run() {
    final JobsProcessor parentProc = this;
    QueueConnector.goAMQP("submitJob", new QueueConnector.AMQPWorker<Boolean>() {
        @Override/*from  w w  w  .j  av a  2  s  .  c  o m*/
        public Boolean go(com.rabbitmq.client.Connection conn, com.rabbitmq.client.Channel channel)
                throws IOException {

            channel.exchangeDeclare(conf.getString("transfers.exchange.submited"), "topic", true);

            channel.queueDeclare(conf.getString("transfers.queue.submited.server_initialised"), true, false,
                    false, null);

            channel.queueBind(conf.getString("transfers.queue.submited.server_initialised"),
                    conf.getString("transfers.exchange.submited"),
                    "direction." + JobDescription.DIRECTION.PUSHFROMVOSPACE);
            channel.queueBind(conf.getString("transfers.queue.submited.server_initialised"),
                    conf.getString("transfers.exchange.submited"),
                    "direction." + JobDescription.DIRECTION.PULLTOVOSPACE);
            channel.queueBind(conf.getString("transfers.queue.submited.server_initialised"),
                    conf.getString("transfers.exchange.submited"),
                    "direction." + JobDescription.DIRECTION.LOCAL);

            QueueingConsumer consumer = new QueueingConsumer(channel);
            channel.basicConsume(conf.getString("transfers.queue.submited.server_initialised"), false,
                    consumer);

            try {
                // The main cycle to process the jobs
                while (!jobsThread.isInterrupted()) {

                    for (Iterator<Future<STATE>> it = workers.iterator(); it.hasNext();) {
                        Future<STATE> next = it.next();
                        if (next.isDone()) {
                            it.remove();
                            logger.debug("Job " + next + " is removed from the workers.");
                        }
                    }

                    if (workers.size() >= jobsPoolSize) {
                        logger.debug("Waiting for a jobs pool, size: " + workers.size());
                        synchronized (JobsProcessor.class) {
                            JobsProcessor.class.wait();
                        }
                        logger.debug("End waiting for a jobs pool, size: " + workers.size());
                    } else {
                        logger.debug("Waiting for a job");
                        QueueingConsumer.Delivery delivery = consumer.nextDelivery();

                        // Job JSON notation
                        JobDescription job = (new ObjectMapper()).readValue(delivery.getBody(), 0,
                                delivery.getBody().length, JobDescription.class);

                        logger.debug("There's a submited job! " + job.getId());

                        TransferThread thread = new TransferThread(job, parentProc);

                        Future<STATE> future = service.submit(thread);

                        workers.add(future);
                        channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
                    }
                }
            } catch (InterruptedException ex) {
                // server restarted
            }

            return true;
        }
    });

}

From source file:edu.jhu.pha.vospace.process.NodeProcessor.java

License:Apache License

@Override
public void run() {
    QueueConnector.goAMQP("nodesProcessor", new QueueConnector.AMQPWorker<Boolean>() {
        @Override/*  w  w w . j ava  2 s .c  om*/
        public Boolean go(com.rabbitmq.client.Connection conn, com.rabbitmq.client.Channel channel)
                throws IOException {

            channel.exchangeDeclare(conf.getString("process.exchange.nodeprocess"), "fanout", true);
            channel.exchangeDeclare(conf.getString("vospace.exchange.nodechanged"), "fanout", false);

            channel.queueDeclare(conf.getString("process.queue.nodeprocess"), true, false, false, null);

            channel.queueBind(conf.getString("process.queue.nodeprocess"),
                    conf.getString("process.exchange.nodeprocess"), "");

            QueueingConsumer consumer = new QueueingConsumer(channel);
            channel.basicConsume(conf.getString("process.queue.nodeprocess"), false, consumer);

            while (!Thread.currentThread().isInterrupted()) {

                Node node = null;

                try {
                    QueueingConsumer.Delivery delivery = consumer.nextDelivery();

                    Map<String, Object> nodeData = (new ObjectMapper()).readValue(delivery.getBody(), 0,
                            delivery.getBody().length, new TypeReference<HashMap<String, Object>>() {
                            });

                    channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
                    node = NodeFactory.getNode(new VospaceId((String) nodeData.get("uri")),
                            (String) nodeData.get("owner"));

                    logger.debug("Node changed: " + nodeData.get("uri") + " " + nodeData.get("owner") + " "
                            + node.getType());

                    switch (node.getType()) {
                    case DATA_NODE:
                    case STRUCTURED_DATA_NODE:
                    case UNSTRUCTURED_DATA_NODE: {
                        TikaInputStream inp = null;
                        try {
                            Metadata detectTikaMeta = new Metadata();
                            detectTikaMeta.set(Metadata.RESOURCE_NAME_KEY,
                                    node.getUri().getNodePath().getNodeName());
                            inp = TikaInputStream.get(node.exportData());
                            //MediaType type = new DefaultDetector().detect(inp, nodeTikaMeta);
                            List<Detector> list = new ArrayList<Detector>();
                            list.add(new SimulationDetector());
                            list.add(new DefaultDetector());
                            Detector detector = new CompositeDetector(list);

                            MediaType type = detector.detect(inp, detectTikaMeta);
                            node.getNodeInfo().setContentType(type.toString());
                            node.getMetastore().storeInfo(node.getUri(), node.getNodeInfo());

                            JsonNode credentials = UserHelper.getProcessorCredentials(node.getOwner());

                            boolean makeStructured = false;

                            List<String> externalLinks = new ArrayList<String>();
                            for (ProcessorConfig processorConf : ProcessingFactory.getInstance()
                                    .getProcessorConfigsForNode(node, credentials)) {
                                Metadata nodeTikaMeta = new Metadata();
                                nodeTikaMeta.set(TikaCoreProperties.SOURCE, node.getUri().toString());
                                nodeTikaMeta.set("owner", (String) nodeData.get("owner"));
                                nodeTikaMeta.set(TikaCoreProperties.TITLE,
                                        node.getUri().getNodePath().getNodeName());
                                nodeTikaMeta.add(TikaCoreProperties.METADATA_DATE, dateFormat
                                        .format(Calendar.getInstance(TimeZone.getTimeZone("UTC")).getTime()));

                                nodeTikaMeta.set(Metadata.CONTENT_LOCATION,
                                        ((DataNode) node).getHttpDownloadLink().toASCIIString());
                                nodeTikaMeta.set(Metadata.CONTENT_TYPE, type.toString());

                                AbstractParser parser;
                                TikaConfig config = TikaConfig.getDefaultConfig();
                                if (processorConf.getTikaConfig() != null) {
                                    config = new TikaConfig(
                                            getClass().getResourceAsStream(processorConf.getTikaConfig()));
                                }

                                parser = new CompositeParser(config.getMediaTypeRegistry(), config.getParser());

                                Processor processor = Processor.fromProcessorConfig(processorConf);

                                InputStream str = null;
                                try {
                                    str = TikaInputStream.get(node.exportData());
                                    parser.parse(str, processor.getContentHandler(), nodeTikaMeta,
                                            new ParseContext());
                                } finally {
                                    try {
                                        str.close();
                                    } catch (Exception ex) {
                                    }
                                }

                                // now do out-of-tika processing of results
                                try {
                                    processor.processNodeMeta(nodeTikaMeta,
                                            credentials.get(processorConf.getId()));
                                    logger.debug("Processing of " + node.getUri().toString() + " is finished.");

                                } catch (Exception e) {
                                    logger.error("Error processing the node. " + e.getMessage());
                                    e.printStackTrace();
                                    processError(node, e);
                                }

                                String[] links = nodeTikaMeta.getValues("EXTERNAL_LINKS");

                                if (null != links && links.length > 0) {
                                    externalLinks.addAll(Arrays.asList(links));
                                }

                                MediaType curType = MediaType.parse(nodeTikaMeta.get(Metadata.CONTENT_TYPE));
                                if (MIME_REGISTRY.isSpecializationOf(curType, type)) {
                                    type = curType;
                                    logger.debug("Media type reassigned to " + type.toString() + " by "
                                            + processorConf.getId());
                                }

                                String nodeTypeStr = nodeTikaMeta.get("NodeType");
                                if (null != nodeTypeStr
                                        && NodeType.valueOf(nodeTypeStr).equals(NodeType.STRUCTURED_DATA_NODE))
                                    makeStructured = true;
                            }

                            node.makeNodeStructured(makeStructured);

                            Map<String, String> properties = new HashMap<String, String>();
                            properties.put(PROCESSING_PROPERTY, "done");
                            if (externalLinks.size() > 0) {
                                properties.put(EXTERNAL_LINK_PROPERTY, StringUtils.join(externalLinks, ' '));
                            }
                            node.getNodeInfo().setContentType(type.toString());

                            node.getMetastore().updateUserProperties(node.getUri(), properties);
                            node.getMetastore().storeInfo(node.getUri(), node.getNodeInfo());

                            logger.debug("Updated node " + node.getUri().toString() + " to "
                                    + node.getNodeInfo().getContentType() + " and "
                                    + node.getNodeInfo().getSize());

                            // update node's container size metadata
                            try {
                                ContainerNode contNode = (ContainerNode) NodeFactory.getNode(
                                        new VospaceId(
                                                new NodePath(node.getUri().getNodePath().getContainerName())),
                                        node.getOwner());
                                node.getStorage().updateNodeInfo(contNode.getUri().getNodePath(),
                                        contNode.getNodeInfo());
                                node.getMetastore().storeInfo(contNode.getUri(), contNode.getNodeInfo());
                            } catch (URISyntaxException e) {
                                logger.error("Updating root node size failed: " + e.getMessage());
                            }

                            try {
                                nodeData.put("container",
                                        node.getUri().getNodePath().getParentPath().getNodeStoragePath());
                                byte[] jobSer = (new ObjectMapper()).writeValueAsBytes(nodeData);
                                channel.basicPublish(conf.getString("vospace.exchange.nodechanged"), "", null,
                                        jobSer);
                            } catch (IOException e) {
                                logger.error(e);
                            }
                        } catch (TikaException ex) {
                            logger.error("Error parsing the node " + node.getUri().toString() + ": "
                                    + ex.getMessage());
                            processError(node, ex);
                            ex.printStackTrace();
                        } catch (SAXException ex) {
                            logger.error("Error SAX parsing the node " + node.getUri().toString() + ": "
                                    + ex.getMessage());
                            processError(node, ex);
                        } catch (IOException ex) {
                            logger.error("Error reading the node " + node.getUri().toString() + ": "
                                    + ex.getMessage());
                            processError(node, ex);
                        } finally {
                            try {
                                inp.close();
                            } catch (Exception ex2) {
                            }
                            ;
                        }

                        break;
                    }
                    case CONTAINER_NODE: {
                        //                           DbPoolServlet.goSql("Processing nodes",
                        //                               "select * from nodes where owner = ?)",
                        //                                 new SqlWorker<Boolean>() {
                        //                                     @Override
                        //                                     public Boolean go(java.sql.Connection conn, java.sql.PreparedStatement stmt) throws SQLException {
                        //                                        stmt.setString(1, node.getOwner());
                        //                                         /*ResultSet resSet = stmt.executeQuery();
                        //                                         while(resSet.next()) {
                        //                                            String uriStr = resSet.getString(1);
                        //                                            String username = resSet.getString(2);
                        //                                            
                        //                                            try {
                        //                                               VospaceId uri = new VospaceId(uriStr);
                        //                                               
                        //                                               Node newNode = NodeFactory.getInstance().getNode(uri, username);
                        //                                               newNode.remove();
                        //                                            } catch(Exception ex) {
                        //                                               ex.printStackTrace();
                        //                                            }
                        //                                         }*/
                        //                                        return true;
                        //                                     }
                        //                                 }
                        //                        
                        //                            );
                        break;
                    }
                    default: {
                        break;
                    }
                    }

                } catch (InterruptedException ex) {
                    logger.error("Sleeping interrupted. " + ex.getMessage());
                    processError(node, ex);
                } catch (IOException ex) {
                    ex.printStackTrace();
                    logger.error("Error reading the changed node JSON: " + ex.getMessage());
                    processError(node, ex);
                } catch (URISyntaxException ex) {
                    logger.error("Error parsing VospaceId from changed node JSON: " + ex.getMessage());
                    processError(node, ex);
                }
            }

            return true;
        }
    });

}

From source file:edu.kit.dama.util.test.RabbitMQReceiver.java

License:Apache License

public static void main(String[] args) throws IOException, TimeoutException, InterruptedException {

    ConnectionFactory factory = new ConnectionFactory();
    factory.setHost("localhost");
    final Connection connection = factory.newConnection();
    final Channel channel = connection.createChannel();

    channel.exchangeDeclare(EXCHANGE_NAME, "topic", true);
    String queueName = channel.queueDeclare().getQueue();
    channel.queueBind(queueName, EXCHANGE_NAME, "audit.*");

    //  channel.queueDeclare(QUEUE_NAME, true, false, false, null);
    System.out.println(" [*] Waiting for messages. To exit press CTRL+C");

    /*  final Consumer consumer = new DefaultConsumer(channel) {
    @Override// w w  w . java  2 s . c  o m
    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 + "'");
    try {
      doWork(message);
    } finally {
      System.out.println(" [x] Done");
      channel.basicAck(envelope.getDeliveryTag(), false);
    }
    }
    };
    channel.basicConsume(TASK_QUEUE_NAME, false, consumer);
    }*/
    /*   QueueingConsumer consumer = new QueueingConsumer(channel);
            
           /*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 + "'");
    }
           };*/
    /*channel.basicConsume(queueName, true, consumer);
           QueueingConsumer.Delivery delivery = consumer.nextDelivery(10000);
           if (delivery != null) {
    byte[] message = delivery.getBody();
    System.out.println("MESS " + new String(message));
           }*/
    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 + "'");
        }
    };
    channel.basicConsume(queueName, true, consumer);

    // System.exit(0);
}

From source file:es.devcircus.rabbitmq_examples.rabbitmq_hello_world.Recv.java

License:Open Source License

/**
 * /*from  w w  w .j  a v  a2  s .  co  m*/
 * @param argv
 * @throws Exception 
 */
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");

    QueueingConsumer consumer = new QueueingConsumer(channel);
    channel.basicConsume(QUEUE_NAME, true, consumer);

    while (true) {
        QueueingConsumer.Delivery delivery = consumer.nextDelivery();
        String message = new String(delivery.getBody());
        System.out.println(" [x] Received '" + message + "'");
    }
}

From source file:es.devcircus.rabbitmq_examples.rabbitmq_publish_subscribe.ReceiveLog.java

License:Open Source License

/**
 *
 * @param argv/*from w w  w .j av  a 2 s .c o  m*/
 * @throws Exception
 */
public static void main(String[] argv) throws Exception {

    ConnectionFactory factory = new ConnectionFactory();
    factory.setHost("localhost");
    Connection connection = factory.newConnection();
    Channel channel = connection.createChannel();

    channel.exchangeDeclare(EXCHANGE_NAME, "fanout");
    String queueName = channel.queueDeclare().getQueue();
    channel.queueBind(queueName, EXCHANGE_NAME, "");

    System.out.println(" [*] Waiting for messages. To exit press CTRL+C");

    QueueingConsumer consumer = new QueueingConsumer(channel);
    channel.basicConsume(queueName, true, consumer);

    while (true) {
        QueueingConsumer.Delivery delivery = consumer.nextDelivery();
        String message = new String(delivery.getBody());

        System.out.println(" [x] Received '" + message + "'");
    }
}

From source file:es.devcircus.rabbitmq_examples.rabbitmq_routing.ReceiveLogsDirect.java

License:Open Source License

/**
 *
 * @param argv/* w  w w  . j  a va2 s.co m*/
 * @throws Exception
 */
public static void main(String[] argv) throws Exception {

    ConnectionFactory factory = new ConnectionFactory();
    //        factory.setHost("localhost");
    factory.setHost("192.168.0.202");
    Connection connection = factory.newConnection();
    Channel channel = connection.createChannel();

    channel.exchangeDeclare(EXCHANGE_NAME, "direct");
    String queueName = channel.queueDeclare().getQueue();

    if (argv.length < 1) {
        System.err.println("Usage: ReceiveLogsDirect [info] [warning] [error]");
        System.exit(1);
    }

    for (String severity : argv) {
        channel.queueBind(queueName, EXCHANGE_NAME, severity);
    }

    System.out.println(" [*] Waiting for messages. To exit press CTRL+C");

    QueueingConsumer consumer = new QueueingConsumer(channel);
    channel.basicConsume(queueName, true, consumer);

    while (true) {
        QueueingConsumer.Delivery delivery = consumer.nextDelivery();
        String message = new String(delivery.getBody());
        String routingKey = delivery.getEnvelope().getRoutingKey();

        System.out.println(" [x] Received '" + routingKey + "':'" + message + "'");
    }
}