博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RabbitMQ之Windows下环境搭建
阅读量:7055 次
发布时间:2019-06-28

本文共 3511 字,大约阅读时间需要 11 分钟。

环境:

otp_win64_18.exe

rabbitmq-server-3.6.0.exe

 

 

RabbitMQ是建立在强大的Erlang OTP平台上,因此安装Rabbit MQ的前提是安装Erlang

 

http://www.erlang.org/downloads

 

下载并安装 Eralng OTP For Windows 比如otp_win64_xxx.exe

安装完成之后创建一个名为ERLANG_HOME的环境变量,其值指向erlang的安装目录,

同时将%ERLANG_HOME%\bin加入到Path中,

最后打开命令行,输入erl,如果出现erlang的版本信息就表示erlang语言环境安装成功

 

下载并安装 Rabbit MQ Server Windows Installer 比如rabbitmq-server-xxx.exe(安装目录不要有空格)

 

进入RabbitMQ的sbin目录,执行rabbitmqctl status 查看是否安装成功

 

接着输入 rabbitmq-plugins enable rabbitmq_management 来安装RabbitMQ-Plugins,

这个相当于是一个管理界面,

方便我们在浏览器界面查看RabbitMQ各个消息队列以及exchange的工作情况

 

插件安装完之后,在浏览器输入http://localhost:15672进行验证,默认的账户和密码均是 guest

 

新建一个Maven工程

com.rabbitmq
amqp-client
3.6.0

 

 

消息生产者

package com.zns.rabbitmq;import com.rabbitmq.client.Channel;import com.rabbitmq.client.Connection;import com.rabbitmq.client.ConnectionFactory;public class Producer {    private final static String QUEUE_NAME = "MyQueue";    public static void main(String[] argv) throws Exception {        // 创建连接工厂        ConnectionFactory factory = new ConnectionFactory();        // 设置RabbitMQ地址        factory.setHost("localhost");        // 创建一个新的连接        Connection connection = factory.newConnection();        // 创建一个频道        Channel channel = connection.createChannel();        // 声明一个队列 --        // 在RabbitMQ中,队列声明是幂等性的(一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同),也就是说,如果不存在,就创建,如果存在,不会对已经存在的队列产生任何影响。        channel.queueDeclare(QUEUE_NAME, false, false, false, null);        String message = "Hello World!";        // 发送消息到队列中        channel.basicPublish("", QUEUE_NAME, null, message.getBytes("UTF-8"));        System.out.println("P Sent '" + message + "'");        // 关闭频道和连接        channel.close();        connection.close();    }}

 

 

消息消费者

package com.zns.rabbitmq;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 = "MyQueue";    public static void main(String[] argv) throws Exception {        // 创建连接工厂        ConnectionFactory factory = new ConnectionFactory();        // 设置RabbitMQ地址        factory.setHost("localhost");        // 创建一个新的连接        Connection connection = factory.newConnection();        // 创建一个频道        Channel channel = connection.createChannel();        // 声明要关注的队列 --        // 在RabbitMQ中,队列声明是幂等性的(一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同),也就是说,如果不存在,就创建,如果存在,不会对已经存在的队列产生任何影响。        channel.queueDeclare(QUEUE_NAME, false, false, false, null);        System.out.println("C [*] Waiting for messages...");        // DefaultConsumer类实现了Consumer接口,通过传入一个频道,告诉服务器我们需要那个频道的消息,如果频道中有消息,就会执行回调函数handleDelivery        DefaultConsumer consumer = new DefaultConsumer(channel) {            @Override            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties,                    byte[] body) throws IOException {                String message = new String(body, "UTF-8");                System.out.println("C Received '" + message + "'");            }        };        // 自动回复队列应答 -- RabbitMQ中的消息确认机制        channel.basicConsume(QUEUE_NAME, true, consumer);    }}

 

 

确保Rabbitmq服务已开启,先运行生产者向队列发送消息,然后再运行消费者可以看到接收了消息。

转载于:https://www.cnblogs.com/zengnansheng/p/10389641.html

你可能感兴趣的文章
iOS多线程编程之Grand Central Dispatch(GCD)介绍和使用
查看>>
QT编写TCP的问题
查看>>
poj1456 结构体排序+贪心
查看>>
javascript 乘法口诀表
查看>>
views 视图函数
查看>>
MySql详解(一)
查看>>
解题思路:蓄水池问题
查看>>
android 实时显示系统时间
查看>>
fatal error: asm/system.h: No such file or directory
查看>>
为什么要设计
查看>>
SerializableObj
查看>>
2018年5月31日笔记
查看>>
(转)CentOs上配置samba服务
查看>>
Photoshop给草坪上的人物加上唯美的紫色霞光
查看>>
移动平台对 META 标签的定义
查看>>
curl 命令详解
查看>>
启动改为本地Ip
查看>>
云服务器CentOS7.5安装MySQL5.7
查看>>
代理模式
查看>>
vue文档阅读笔记——计算属性和侦听器
查看>>