RabbitMQ预研

概述

项目的部分功能重构计划引入消息中间件,现将安装RabbitMQ以及通过SpringBoot集成的过程进行记录。

安装

本人使用环境:CentOS7
1.erlang安装

官网地址: https://www.erlang-solutions.com/resources/download.html
推荐按照Installation using repository指引安装,最后一步选择
    sudo yum install erlang

遇到的问题:
Q1:从官网下载rpm包为esl-erlang,安装RabbitMQ时需要依赖erlang,会报找不到依赖。

看官网解释是:
other packages have dependencies on "erlang", not "esl-erlang".
但未在官网找到erlang包下载页,在rabbit官网上看到推荐的下载地址:
https://bintray.com/rabbitmq-erlang/rpm/erlang
也无法访问(好像是在维护),所以直接通过仓库下载安装。

2.RabbitMQ安装

1)安装前注意版本要与erlang匹配
版本匹配:
http://www.rabbitmq.com/which-erlang.html
2)官网地址:
http://www.rabbitmq.com/install-rpm.html
推荐按Using Bintray Yum Repository指引安装
最后:
    sudo yum install rabbitmq-server.noarch
3)设置开机启动
    chkconfig rabbitmq-server on
4)关于修改数据库或日志地址要注意修改文件所属用户以及配置信息。
    Note: The server is set up to run as system user rabbitmq. If you change the location of the node database or the logs, you must ensure the files are owned by this user (and also update the environment variables).
5)使用web管理插件
    rabbitmq-plugins enable rabbitmq_management
    访问地址为服务器地址: 15672
6)默认用户 guest/guest (只能在本机访问),我们新建一个
    rabbitmqctl add_user admin admin
    设置下权限
    rabbitmqctl set_user_tags admin administrator

使用SpringBoot集成

1.引入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

2.配置信息

RabbitMQ预研

3.队列配置

RabbitMQ预研

4.发送工具类

RabbitMQ预研

5.接收者

RabbitMQ预研

6.测试

RabbitMQ预研

遇到的问题:
Q1:

Caused by: java.net.ConnectException: Connection timed out: connect

产生原因:未开启5672端口访问权限
解决方法:
不同环境修改防火墙限制方式不太一样,以cs7为例
firewall-cmd --permanent --add-port=5672/tcp
Q2:

Caused by: com.rabbitmq.client.ShutdownSignalException: connection error; protocol method: #method<connection.close>(reply-code=530, reply-text=NOT_ALLOWED - access to vhost '/' refused for user 'admin', class-id=10, method-id=40)

产生原因:新建的admin用户未授予访问权限

RabbitMQ预研

解决办法:
可以使用命令添加权限,但使用管理界面会更方便
点击用户列表上用户名,进入该用户详情页

RabbitMQ预研

添加访问权限就可以了。
这一小节主要参考spring-boot官方文档
Part IV. Spring Boot features
-->33 Messaging
-->33.2 AMQP

小结

这篇笔记内容比较少,只是简单的写了下安装与集成的过程。

我想记录的其实是一个学习的思路,当遇到未接触过的技术想要尝试时,尽量按照官方文档进行安装,可以少走很多弯路。(毕竟现在翻译工具很发达,博客陈旧且多坑)

sring-boot这种框架的存在让我们集成变得非常的简单。前人的努力使我们能更多的将精力放在研究技术本身,学习设计思想,以及与业务场景进行结合,更好的解决遇到的问题或提升用户体验。

对于RabbitMQ的基础概念以及高级使用等我研究一段时间再写点笔记,当然也希望看到大佬们能多分享在项目中使用到的框架或中间件。结合业务场景的技术选型才是我等菜鸟更想要去了解的。

感觉自己可能有些步骤走了弯路,望看到的大佬指出。有按上述步骤进行尝试的小伙伴也请将遇到的问题在下方留言,一起来解决。

相关推荐