java rabbitmq MessageQueue 使用第一章

来源:互联网 发布:佳能mp228清零软件 编辑:程序博客网 时间:2024/06/14 22:58
一..环境搭建
运行message queue  client 的 java代码需要3个步骤
1..装erlang环境
http://www.erlang.org/downloads
2..erlang环境为了rabbitmq 的server 安装做准备
http://www.rabbitmq.com/releases/rabbitmq-server/v3.3.4/rabbitmq-server-3.3.4.exe
3..安装server后, 写java 代码
message queue  官网  下载jar 包, 源码
http://www.rabbitmq.com/java-client.html

二..启动MQ server
将以上步骤做好后,启动rabbitmq server,启动方法在代码中查看

三..原理介绍
MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法, 即MQ 用于进程通信
MQ client  的java API, 底层基于java 的socket 通信


发送端代码:
package MessageQueue;import com.rabbitmq.client.ConnectionFactory;import com.rabbitmq.client.Connection;import com.rabbitmq.client.Channel;/** * 每次运行mq client前, 要启动mq server, * 路径: C:\r 软件可执行\rabbitmq_server\RabbitMQ Server\rabbitmq_server-3.3.4\sbin * 运行     rabbitmq-server.bat start * @author jalo li * */public class Send {    private final static String QUEUE_NAME = "hello";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);    String message = "Hello World!";    channel.basicPublish("", QUEUE_NAME, null, message.getBytes());    System.out.println(" [x] Sent '" + message + "'");        channel.close();    connection.close();}}



接收端代码:
package MessageQueue;import com.rabbitmq.client.Channel;import com.rabbitmq.client.ConnectionFactory;import com.rabbitmq.client.QueueingConsumer;import com.rabbitmq.client.Connection;public class Recv {    private final static String QUEUE_NAME = "hello";    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();//这个是阻塞方法,发送端publish一下,这里就能拿到一个delivery        String message = new String(delivery.getBody());        System.out.println(" [x] Received '" + message + "'");    }    }}







0 0
原创粉丝点击