Windows环境的RabbitMQ之HelloWorld

来源:互联网 发布:拳皇2002出招优化补丁 编辑:程序博客网 时间:2024/05/17 03:01

RabbitMQ是一种应用程序对应用程序的通信方法,是bla...bla...bla...嗯,既然这么牛X,那就在win7环境先实验一下吧!

第一步:

        不同于ActiveMQ,rabbitMQ是用Erlang编写的,所以需要先安装Erlang环境,我的版本是erl9.0,官网:http://www.erlang.org并用类似安装jkd的方式配置环境变量;

        安装RabbitMQ,我的版本是rabbitmq_server-3.6.11,官网:http://www.rabbitmq.com/download.html同样类似安装jdk的方式配置Erlang环境;

        但是在执行rabbitmq-server.bat的时候黑框闪了一下,报了Error,于是换一条路:

        点击所有程序中:

        输入rabbitmq-plugins enable rabbitmq_management

        浏览器访问 http://localhost:15672  用户名密码都是guest

        环境准备就绪

第二步:

        新建java项目,导入amqp-client-3.6.1.jar;

        消息生产者:

package com.cn.two;import com.rabbitmq.client.Channel;import com.rabbitmq.client.Connection;import com.rabbitmq.client.ConnectionFactory;public class Producer {private final static String QUEUE_NAME = "HelloWorld";public static void main(String[] args) throws Exception {//1.创建连接工厂,并设置链接地址ConnectionFactory factory = new ConnectionFactory();factory.setHost("127.0.0.1");//2.创建连接Connection connection = factory.newConnection();//3.创建频道Channel channel = connection.createChannel();//4.队列声明,参数意义分别是  队列名称;是否持久化;是否独占queue(是否仅供此连接使用);不使用时是否自动删除;其他channel.queueDeclare(QUEUE_NAME, false, false, false, null);//5.创建消息String message = "";for(int i = 0; i < 5; i++){message = "hello " + i;System.out.println("message is " + message);//6.发布消息channel.basicPublish("", QUEUE_NAME, null, message.getBytes("UTF-8"));}//7.关闭资源channel.close();connection.close();}}
        运行之后查看http://127.0.0.1:15672 发现已产生五条消息

第三步:

        消息消费者:

package com.cn.two;import java.io.IOException;import com.rabbitmq.client.AMQP;import com.rabbitmq.client.Channel;import com.rabbitmq.client.Connection;import com.rabbitmq.client.ConnectionFactory;import com.rabbitmq.client.DefaultConsumer;import com.rabbitmq.client.Envelope;public class Consumer {private final static String QUEUE_NAME = "HelloWorld";public static void main(String[] args) throws Exception {//前四步不变://1.创建连接工厂,并设置链接地址ConnectionFactory factory = new ConnectionFactory();factory.setHost("127.0.0.1");//2.创建连接Connection connection = factory.newConnection();//3.创建频道Channel channel = connection.createChannel();//4.队列声明,参数意义分别是  队列名称;是否持久化;是否独占queue(是否仅供此连接使用);不使用时是否自动删除;其他channel.queueDeclare(QUEUE_NAME, false, false, false, null);//5.向DefaultConsumer传入一个频道,告诉服务器我们需要那个频道的消息,如果频道中有消息,就会执行回调函数handleDeliveryDefaultConsumer consumer = new DefaultConsumer(channel){public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException{String message = new String(body,"UTF-8");System.out.println("get message " + message);}};//6.自动回复队列应答,RabbitMQ中的消息确认机制channel.basicConsume(QUEUE_NAME, true, consumer);}}
        运行后控制台打印:

get message hello 0get message hello 1get message hello 2get message hello 3get message hello 4
        访问http://127.0.0.1:15672 发现消息已被消费:


        完成试验后发现下载的rabbitmq里面有一个erlang文件,那么之前是不是可以不用单独下载erlang了?有待研究

       本文参考:http://www.rabbitmq.com/tutorials/tutorial-one-java.html

原创粉丝点击