安装rabbitmq步骤
简言之,就是要先安装erlang,再安装rabbitmq,而且两者之间的版本号要注意。erlang版本低了,rabbitmq会报错。
https://blog.csdn.net/LuuvyJune/article/details/90516891
https://www.cnblogs.com/fengyumeng/p/11133924.html (评论区有erlang快速链接,不需FQ)
1mq消息中间件
1.1mq消息中间件介绍
Mq消息中间件完成,rpc调用的异步执行,服务调用之间的解耦合,提高主要(核心)服务的响应速度
在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。
1.2安装Rabbitmq
链接:https://pan.baidu.com/s/1CJNLCZON7fu1Hlze8VmMtQ
提取码:xfkx
复制这段内容后打开百度网盘手机App,操作更方便哦
1.2.1安装环境依赖
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
yum -y install perl
1.2.2上传安装包
1.2.3安装ErLang语言包
1.2.3.3编译安装erlang
进入erlang解压目录
make && make install
1.2.3.4配置erlang的环境变量
ERLANG_HOME=/usr/local/erlang PATH=$ERLANG_HOME/bin:$PATH export ERLANG_HOME export PATH |
1.2.3.5测试erlang安装
执行命令:erl
1.2.4安装rabbitmq
1.2.4.1 解压rabbitmq
yum -y install xz
1.2.4.2拷贝安装
1.2.4.3启动rabbitmq服务
进入rabbitmq的sbin目录:
#启动命令,该命令ctrl+c后会关闭服务 ./rabbitmq-server
#在后台启动Rabbit ./rabbitmq-server -detached
#关闭服务 ./rabbitmqctl stop
#关闭服务(kill) 找到rabbitmq服务的pid [不推荐] ps -ef|grep rabbitmq kill -9 **** |
#进入RabbitMQ安装目录 cd /usr/local/rabbitmq-3.6.1/sbin
#添加用户 #rabbitmqctl add_user Username Password ./rabbitmqctl add_user rabbitadmin 123456
#分配用户标签 #rabbitmqctl set_user_tags User Tag #[administrator]:管理员标签 ./rabbitmqctl set_user_tags rabbitadmin administrator
给用户访问虚拟机的权限
rabbitmqctl set_permissions -p / mq '.*' '.*' '.*' |
1.2.4.5关闭防火墙
1.2.4.6启动mq的管理ui
1.2.4.7访问rabbitmq的管理员UI
http://服务器IP地址:15672/
2使用springcloud+rabbitmq访问mq队列
2.1建立springcloud_rabbitmq发送消息
2.1.1添加依赖
2.1.2建立BeanConfigs类
实例化amqpTemplate对象
package com.bjsxt.app.config;
import org.springframework.amqp.core.Queue; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;
@Configuration publicclass BeanConfig {
/*** * 项目启动的时候创建一个队列,队列名字为hello * @return */ @Bean public Queue queue() { returnnew Queue("hello") ; } }
|
2.1.3建立Sender消息发送者
package com.bjsxt.app.sender;
import java.util.Date;
import org.springframework.amqp.core.AmqpTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration;
@Configuration publicclass Sender {
//注入rabbitmq的模板操作对象 @Autowired private AmqpTemplate amqpTemplate;
publicvoid sendMsg() { //向名字为hello的队列中添加数据 amqpTemplate.convertAndSend("hello", new Date().toString()); } }
|
2.1.4配置application.yml
spring: application: name: rabbit_mq rabbitmq: host: 192.168.114.80 port: 5672 username: mquser password: 123456 |
2.1.5建立测试类
package com.bjsxt.app;
import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner;
import com.bjsxt.app.sender.Sender;
@RunWith(SpringRunner.class) @SpringBootTest publicclass SpringcloudRabbitmqApplicationTests {
//注入消息发送者对象 @Autowired private Sender sender; @Test publicvoid contextLoads() throws InterruptedException { while(true) { //调用消息发送方法 sender.sendMsg(); Thread.sleep(3000); } }
}
|
2.2建立sprngcloud_rabbitmq_receiver消费消息
2.2.1建立Receiver类
package com.bjsxt.app.receive;
import org.springframework.amqp.rabbit.annotation.RabbitHandler; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.context.annotation.Configuration;
/*** * 消息的消费者 * @author Administrator * */ @Configuration @RabbitListener(queues="hello") publicclass Receiver {
/*** * 用来消费队列的中消息 * @param msg 获得mq中的消息 */ @RabbitHandler publicvoid receive(String msg) { System.out.println("消费的数据为: "+msg); }
}
|