RabbitMQ入门安装及测试

来源:互联网 发布:如何练好武术枪法知乎 编辑:程序博客网 时间:2024/05/10 07:21

http://blog.csdn.net/boonya/article/details/37879739


1.RabbitMQ是什么?

     MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消 息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。其中较为成熟的MQ产品有IBM WEBSPHERE MQ。MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取或者订阅队列中的消息。MQ和JMS类似,但不同的是JMS是SUN JAVA消息中间件服务的一个标准和API定义,而MQ则是遵循了AMQP协议的具体实现和产品。RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。他遵循Mozilla Public License开源协议

2.RabbitMQ环境安装

下载安装文件

1)下载erlang支持包:http://www.erlang.org/download.html 如图所示:


2)下载rabbitmq server:http://www.rabbitmq.com/releases/rabbitmq-server/


下载RabbitMQ client:http://www.rabbitmq.com/releases/rabbitmq-java-client/或者在http://www.rabbitmq.com/java-client.html


注:由于RabbitMQ 支持erlang、Java和.NET你可以找到不同语言的client支持版本。

配置环境变量 

1)、新建变量:ERLANG_HOME=D:\Program Files\erl6.1,然后再path中添加%ERLANG_HOME%\bin;

2)、新建变量:RABBITMQ_SERVER=D:\Program Files\rabbitmq_server-3.3.4,然后再path中添加%RABBITMQ_SERVER%\sbin;

3)、运行sbin/rabbitmq-server.bat,启动RabbitMQ服务器


 RabbitMQ服务端是用AMPQ协议的, 而客户端支持多种语言(Java, .NET,Erlang......Maybe more........)。下面我们准备用java来写一个‘hello world’,测试RabbitMQ安装。 

3.RabbitMQ客户端测试

将以下两个Java类放入Java项目中测试:

接收端代码

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. package com.boonya.rabbitmq;  
  2.   
  3. import com.rabbitmq.client.Channel;  
  4. import com.rabbitmq.client.Connection;  
  5. import com.rabbitmq.client.ConnectionFactory;  
  6. import com.rabbitmq.client.QueueingConsumer;  
  7. /** 
  8.  *  
  9.  * @author        boonya 
  10.  * 
  11.  * @having-line--------------------------------------------------------- 
  12.  * @filename      Receive.java 
  13.  * @function      TODO 
  14.  * @download      <a href='http://www.rabbitmq.com/download.html'>http://www.rabbitmq.com/download.html</a> 
  15.  * @start-at      2014年7月16日,下午2:50:40 
  16.  * @having-line--------------------------------------------------------- 
  17.  */  
  18. public class Receive  
  19. {  
  20.     private final static String QUEUE_NAME = "hello";  
  21.   
  22.     public static void main(String[] argv) throws Exception  
  23.     {  
  24.   
  25.         ConnectionFactory factory = new ConnectionFactory();  
  26.         factory.setHost("localhost");  
  27.         Connection connection = factory.newConnection();  
  28.         Channel channel = connection.createChannel();  
  29.   
  30.         channel.queueDeclare(QUEUE_NAME, falsefalsefalsenull);  
  31.         System.out.println(" [*] Waiting for messages. To exit press CTRL+C");  
  32.   
  33.         QueueingConsumer consumer = new QueueingConsumer(channel);  
  34.         channel.basicConsume(QUEUE_NAME, true, consumer);  
  35.   
  36.         while (true)  
  37.         {  
  38.             QueueingConsumer.Delivery delivery = consumer.nextDelivery();  
  39.             String message = new String(delivery.getBody());  
  40.             System.out.println(" [x] Received '" + message + "'");  
  41.         }  
  42.     }  
  43. }  

发送端代码

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. package com.boonya.rabbitmq;  
  2.   
  3. import java.io.IOException;  
  4. import com.rabbitmq.client.Channel;  
  5. import com.rabbitmq.client.Connection;  
  6. import com.rabbitmq.client.ConnectionFactory;  
  7. /** 
  8.  *  
  9.  * @author        boonya 
  10.  * 
  11.  * @having-line--------------------------------------------------------- 
  12.  * @filename      Send.java 
  13.  * @function      TODO 
  14.  * @download      <a href='http://www.rabbitmq.com/download.html'>http://www.rabbitmq.com/download.html</a> 
  15.  * @start-at      2014年7月16日,下午2:50:40 
  16.  * @having-line--------------------------------------------------------- 
  17.  */  
  18. public class Send  
  19. {  
  20.     private final static String QUEUE_NAME = "hello";  
  21.   
  22.     public static void main(String[] args) throws IOException  
  23.     {  
  24.         ConnectionFactory factory = new ConnectionFactory();  
  25.         factory.setHost("localhost");  
  26.         Connection connection = factory.newConnection();  
  27.         Channel channel = connection.createChannel();  
  28.   
  29.         channel.queueDeclare(QUEUE_NAME, falsefalsefalsenull);  
  30.         String message = "Hello World!";  
  31.         channel.basicPublish("", QUEUE_NAME, null, message.getBytes());  
  32.         System.out.println(" [x] Sent '" + message + "'");  
  33.   
  34.         channel.close();  
  35.         connection.close();  
  36.     }  
  37. }  

 启动客户端程序测试效果图:


发送三次数据,接收端收到三条消息。demo下载地址:http://download.csdn.net/detail/boonya/7642979(示例程序含Jar包).


0 0
原创粉丝点击