RabbitMQ

1 RabbitMQ

实现了解耦、异步调用服务
MQ(Message Queue)消息队列是应用程序和应用程序之间的通信方法。

RabbitMQ:是有一个开源的,基于AMQP协议实现的,可复用的企业消息系统,支持主流的操作系统,Linux/Windows/MacOX等。支持多语言开发java、python、Ruby、.NET、PHP、C/C++、node.js等。用Erlang语言开发,是一个面向并发的语言。

在这里插入图片描述
在这里插入图片描述

2 环境搭建

2.1 window系统安装

1、安装Erlang虚拟机ErlangOTP到C盘(其他盘可能无法正常启动)
注:使用默认安装路径,系统用户名为英文,计算机名不能包含中文,当前用户为管理员,如果报一个file警告忽略就可以。

2、安装RabbitMQService
注:第一步全部打勾,安装路径默认

3、启用管理

  • 找到RabbitMQ安装路径下sbin目录,进入,右键选择OpenCMD
  • 执行rabbitmq-plugins enable rabbitmq_management(执行完毕提示started 6 plugins)
  • 在浏览器执行 http://127.0.0.1:15672 ,用户名guest密码guest,登录成说明RabbitMQ服务端安装成功
  • 创建用户,配置username、password、tags(角色:admin/monittoring/policymark/none)。
  • 配置Virtual hosts。设置name例如"/name"。进入新创建的Virtual hosts添加用户。
2.2 管理界面功能

在这里插入图片描述
amqp协议端口 5672
控制台端口 15672
clustering集群端口 25672

3 项目集成

3.1 Hello World
  • 说明
    P:消息生产者
    C:消息消费者
    红色:队列
    生产者将消息发送到队列,消费者从队列中获取消息

  • 步骤
    1、pom文件引入jar包
    2、生产者java代码

/**
*  生产消息
*/
Connection connection = ConnectionUtil.getConnection();//获取链接
Channel channel = connection.createChannel();//创建一个通道
channel.queueDeclare("queueName",false,false,false,null);//声明一个队列
channel.basicPublish("","queueName",null,"sendMessageContext".getBytes());//发送消息
channel.close();//关闭通道
connection.close();//关闭链接
/**
*  创建链接
*/
publish static Connection getConnection(){
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("服务地址");
factory.setPort("服务端口");
factory.setVirtualHost("/VirtualHost");
factory.setUsername("username");
factory.setPassword("password");
Connnection connnection = factory.newconnnection();
return connnection;
}

3、消费者java代码

Connection connection = ConnectionUtil.getConnection();//获取链接
Channel channel = connection.createChannel();//创建一个通道
channel.queueDeclare("queueName",false,false,false,null);//声明一个队列(如果队列不存在则创建,如果存在则什么都不做)
QueueingConsumer consumer = new QueueingConsumer();//定义一个队列消费者
channel.basicConsumer("queueName",true,consumer);//监听队列

while(true){
QueueConsumer.Delivery delivery = consumer.nextDelivery();//获取消息
String message = new String(delivery.getBody());//获取消息体
System.out.println(message);
}

4 项目问题

4.1 启动报错,找不到消息队列

有时候新增一个消息队列,需要手动在控制台新增。
1、登录http://mqip:15672/
2、 进入Queues菜单,下拉到页面底部,创建消息队列

删除:点击Queue Name进入详情页,点击Delete

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值