阿里云服务器安装RabbitMq,java本地访问
- 1. 前言
- 2. 阿里云服务器的基础设置
- 2.1 申请试用服务器
- 2.2 服务器的一些基础设置
- 2.2.1 重置密码
- 2.2.2 通过vnc远程连接服务器
- 2.2.3 修改sshd_config文件
- 3. xshell本地连接阿里云服务器
- 4. 阿里云服务器安装RabbitMq
- 4.1 安装RabbitMq
- 4.2 创建RabbitMq的使用用户
- 5. 本地java代码实现访问
1. 前言
公司用到了RabbitMq,于是乎学习了一把,才体会到消息队列存在的意义。正好阿里云服务器可以免费试用三个月,因此,迫不及待的申请了一个,下面就和大家分享一下,在阿里云服务器上安装RabbitMq,本地项目实现访问。
2. 阿里云服务器的基础设置
2.1 申请试用服务器
有三款可以选择试用,我选的操作系统是这个:CentOs 8.4的这款
2.2 服务器的一些基础设置
目的:服务器得做一些基础设置,方便后面试用xshell在本地电脑连接。实际情况下,项目都是部署在远程的服务器对吧?总不会部署在你的电脑上吧。因此要尽早学习对服务器的操作,比如linux系统常用命令、如何在linux系统安装软件、如何部署项目等等…
2.2.1 重置密码
目的: 这步挺重要的,个人理解就像mysql一样,服务器也有个初始root用户,你想使用xshell连接,得先设置一下root用户的密码才行。操作图如下:
2.2.2 通过vnc远程连接服务器
目的:上面设置完了root用户的密码,迫不及待拿xshell连接,半天都连不上,搜了很多博客才解决,这步非常重要!我们得修改服务器上的一个文件,否则无法使用账号密码的形式连接服务器。但是我们连都连不上我们试用的这个阿里的服务器,怎么修改?页面上提供了在界面连接,操作如下图:
2.2.3 修改sshd_config文件
目的: 授权使远程可以使用账号密码方式远程连接阿里服务器
设置密码,连接后跟着输以下命令编辑下面这个文件:
命令含义:
ls 表展示当前文件夹下所有目录
cd ? 表示进入?这个文件夹
vi ? 表编辑?这个文件
还不了解的小伙伴linux常用命令自行补习哦~
如上所示我们是要编辑sshd_config这个文件,输入上面最后一行命令后敲回车按下图所示修改:
操作步骤:
- 按o进入编辑模式
- 使用方向键移动至文件最最下面一行,找到上图所示位置
- 改为上图所示的样子,Passwordauthentication初始可能为No,要改为yes才行
- 点击Esc按键,点击:,输入wq保存并退出
3. xshell本地连接阿里云服务器
目的: 一般都是用连接工具在本地连接远程的服务器进行操作,进行项目部署等工作
操作流程如下图:
4. 阿里云服务器安装RabbitMq
4.1 安装RabbitMq
ok,终于在本地连接上了阿里服务器,后面想在服务器上安装软件和部署项目就方便很多了,下面开始安装RabbitMq,也是走了很多弯路,因RabbitMq是用Erlang写的,还要安装Erlang,还要注意版本,具体见以下博客链接:
链接: https://blog.csdn.net/weixin_45486746/article/details/122160076?ops_request_misc=&request_id=&biz_id=102&utm_term=centos8rabbitmq%E7%99%BE%E5%BA%A6%E7%BD%91%E7%9B%98%E5%AE%89%E8%A3%85%E5%8C%85&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-0-122160076.142v88koosearch_v1,239v2insert_chatgpt&spm=1018.2226.3001.4187
同时也感谢这篇博客帮我解决了安装RabibtMq的问题
重点来了!!!
在阿里服务器上部署的项目,或是安装的程序,你得把项目运行/程序运行的的端口放开允许外界访问才行,操作步骤如下,以mq的管理界面为例:
ok,设置完,本地可以打开浏览器输入阿里服务器ip+15672,显示界面,就证明没问题
4.2 创建RabbitMq的使用用户
重点!guest用户在无法登录访问远程的RabbitMq,因此要在mq部署的那台服务器上去创建新用户,具体命令上面的博客链接有,创建完再试一下,界面就有了~
5. 本地java代码实现访问
- 创建springboot项目
- 引入mq基本客户端依赖
<dependencies><dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.4.1</version></dependency></dependencies>
生产者代码:
package lt.itsource.helloword_model;import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;/*** @description: 消息生产者*/
public class ProducerTest {//队列名称public static final String QUEUE_HELLOWORD = "seller_invoice";/*** 步骤:* 1、创建连接* 2、创建信道* 3、创建队列* 4、准备消息* 5、发送消息*/public static void main(String[] args) throws Exception {//定义连接工厂ConnectionFactory factory = new ConnectionFactory();//设置服务地址factory.setHost(""); // 阿里云公网ipfactory.setPort(5672); // mq服务端口factory.setUsername(""); // mq的用户名factory.setPassword(""); // mq的用户名密码()factory.setVirtualHost("/"); // 固定//1、创建连接,通过工厂获取连接//写在try里面,含义是:到时候会自动关闭连接try(Connection connection = factory.newConnection()){//2、创建信道Channel channel = connection.createChannel();//3、创建队列/*** 声明队列,如果RabbitMQ中没有此队列将自动创建* param1:队列名称* param2:是否持久化* param3:队列是否独占此连接* param4:队列不再使用时是否自动删除此队列* param5:队列参数*/channel.queueDeclare(QUEUE_HELLOWORD, true, false, false, null);//4、准备消息String message = "xx公司的销项发票信息";//5、发送消息channel.basicPublish("", QUEUE_HELLOWORD, null, message.getBytes());System.out.println("消息发送完毕");}}
}
消费者代码:
package lt.itsource.helloword_model;import com.rabbitmq.client.*;/*** @description: 消费者*/
public class ConsumerTest {/*** 步骤:* 1、创建连接* 2、创建信道* 3、监听队列* 4、处理消息*/public static void main(String[] args) throws Exception {//定义连接工厂ConnectionFactory factory = new ConnectionFactory();//设置服务地址factory.setHost("");factory.setPort(5672);factory.setUsername("");factory.setPassword("");factory.setVirtualHost("/");//1、创建连接,通过工厂获取连接Connection connection = factory.newConnection();//2、创建信道Channel channel = connection.createChannel();//3、监听队列(接收消息)/*** 参数1: 队列名称* 参数2: 是否自动ack* 参数3: 接收消息后的回调* 参数4: 取消接收消息后的回调*/System.out.println("消费者启动");DeliverCallback deliverCallback = (ConsumerTag,Message)->{System.out.println("接收到的消息为"+ new String(Message.getBody()));};CancelCallback cancelCallback = var1 ->{System.out.println("消息消费失败了");};channel.basicConsume(ProducerTest.QUEUE_HELLOWORD,true,deliverCallback,cancelCallback);}
}
点击运行生产者,看mq管理界面。可以随时点击运行消费者,看管理界面及控制台打印,体会一下mq的作用。个人理解:mq在多个系统交互中非常有用,特别是协同消息,比如A系统请求B系统,B系统处理时间长,如果是同步的话,A系统界面会一直卡顿等待响应,mq引入后,A系统只需创建一个监听器监听B系统的返回即可,不用同步的一直等待啦。