Windows环境的RabbitMQ之HelloWorld

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传入一个频道,告诉服务器我们需要那个频道的消息,如果频道中有消息,就会执行回调函数handleDelivery
			DefaultConsumer 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 0
	get message hello 1
	get message hello 2
	get message hello 3
	get message hello 4
        访问http://127.0.0.1:15672 发现消息已被消费:


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

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值