RabbitMQ---异步消息队列

package MessageQuene_rabbitMQ;

            import com.rabbitmq.client.Channel;
            import com.rabbitmq.client.Connection;
            import com.rabbitmq.client.ConnectionFactory;

            import java.io.IOException;
            import java.util.Properties;

            /**
             * Created by gzq on 2014/11/11.
             */
            public class Message {

                private Connection connection;
                private ConnectionFactory factory;
                private String exchangeName;
                public Message(){

                    Properties prop = PropUtil.getInstance("MessageQuene_rabbitMQ/config.properti                    es");

                    exchangeName = prop.getProperty("exchangeName");
                    factory = new ConnectionFactory();
                    factory.setHost(prop.getProperty("host"));
                    factory.setVirtualHost(prop.getProperty("virHost"));
                    factory.setUsername(prop.getProperty("username"));
                    factory.setPassword(prop.getProperty("password"));
                }

                /**
                 *
                 * @param message
                 * 发送消息
                 */
                public void sendMessage(String message)  {
                    try {
                         connection = factory.newConnection();//
                    } catch (IOException e) {
                        e.printStackTrace();
                    }

                    Channel channel = null;
                    try {
                        channel = connection.createChannel();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }


                    if (channel != null) {
                        try {
                            channel.basicPublish(exchangeName, "a.quene2#", null, message.getBytes());
                            System.out.println("Message send");
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }

                    //关闭连接
                    try {
                        connection.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }

                }

            }

            package MessageQuene_rabbitMQ;

            import com.rabbitmq.client.Channel;
            import com.rabbitmq.client.Connection;
            import com.rabbitmq.client.ConnectionFactory;
            import com.rabbitmq.client.QueueingConsumer;

            import java.io.IOException;
            import java.util.Properties;

            /**
             * Created by gzq on 2014/11/11.
             * 消息接收类
             */
            public class Receive {

                private Connection connection;
                private ConnectionFactory factory;


                public Receive(){
                    Properties prop = PropUtil.getInstance("MessageQuene_rabbitMQ/config.properties");
                    factory = new ConnectionFactory();
                    factory.setHost(prop.getProperty("host"));
                    factory.setVirtualHost(prop.getProperty("virHost"));
                    factory.setUsername(prop.getProperty("username"));
                    factory.setPassword(prop.getProperty("password"));
                }

                /**
                 *
                 * @param queneName
                 * 获取quene的数据
                 */
                public void getMessage(String queneName){

                    try {
                        connection = factory.newConnection();//
                    } catch (IOException e) {
                        e.printStackTrace();
                    }

                    Channel channel = null;
                    try {
                        channel = connection.createChannel();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }

                    System.out.println("监听启动 !   退出 CTRL+C");
                    QueueingConsumer consumer = new QueueingConsumer(channel);


                    boolean autoAck = false;

                    try {
                        channel.basicConsume(queneName, autoAck, consumer);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }

                    while (true) {

                        QueueingConsumer.Delivery delivery = null;
                        try {
                            delivery = consumer.nextDelivery();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        String message = new String(delivery.getBody());
                        //done

                        //确认消息已经收到
                        try {
                            channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
                        } catch (IOException e) {
                            e.printStackTrace();
                        }

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

                }

            }









你可能感兴趣的:(RabbitMQ---异步消息队列)