0


【玩转Rabbitmq系列】02:Rabbitmq保姆级安装教程与基本消息模型实战

🏠个人主页:啊陈晓

🎉学习方向:java后端开发

🎁我的上一篇文章:【玩转Rabbitmq系列】01:一文带你敲响Rabbitmq的大门

💕如果我的文章对你有帮助,点赞、收藏、留言都是对我最大的动力

【玩转Rabbitmq系列】文章直通车~

【玩转Rabbitmq系列】01:一文带你敲响Rabbitmq的大门

【玩转Rabbitmq系列】02:Rabbitmq保姆级安装教程与基本消息模型实战

** 未完待续.........**


**

现在让我们正式开启进入今天的正文

**

文章目录

前言

 在上一讲中,我们已经初步认识了Rabbitmq,接下来我们将开始进入实战,通过代码的需教程逐步深入Rabbitmq。而今天,我们就来学习如何搭建Rabbitmq的环境,并对六大消息模型之一的基本模型进行代码实现。

一.Linux环境下Rabbitmq的搭建

1.环境准备

JVM环境
使用Xshell进行远程连接

2.安装包下载

大家可以自行前往官网进行下载~

Rabbitmq官网直通车https://www.rabbitmq.com/download.html

当然,我在这里也给大家下载好啦,大家可以自行使用~

链接:https://pan.baidu.com/s/1-bqmSv4wx92dOhZbEKkzmw
提取码:acxy

3.安装步骤

先准备一台虚拟机并命名为rabbitmq-1

**打开终端输入ifconfig,获取ip后通过xshell远程连接 **

** 进入到/usr/local/software 目录(如果没有 software则自己创建) **

cd /usr/local/software #进入对应目录

mkdir software #如果目录不存在则在对应路径下创建文件夹 

** 将下载好的资源包上传到software中,可以使用文件上传工具,也可以直接进行拖动。**

安装文件:

**分别按照以下顺序进行安装 **

rpm -ivh erlang-21.3-1.el7.x86_64.rpm

yum install socat -y  #需在联网环境下执行

rpm -ivh rabbitmq-server-3.8.8-1.el7.noarch.rpm

Rabbitmq的常用命令

分别按照下面顺序启动服务开启web管理插件

chkconfig rabbitmq-server on #添加开机启动服务

/sbin/service rabbitmq-server start #启动服务

/sbin/service rabbitmq-server status #查看服务状态

/sbin/service rabbitmq-server stop  #停止服务

rabbitmq-plugins enable rabbitmq_management #开启web管理插件

** 服务状态显示如下即成功**

** 然后我们添加一个新的用户**

rabbitmqctl add_user root password  #创建账号

rabbitmqctl set_user_tags root administrator #设置用户角色

rabbitmqctl set_permissions -p "/" root ".*" ".*" ".*"  #设置用户权限

rabbitmqctl list_users #查看当前用户

**可以看到我们已经出现了名字为root的用户 **

访问:http://192.168.154.138:15672/ #将前面的IP地址换成你自己的http://192.168.154.138/

可能你会出现无法访问的状态,这是因为你的防火墙还没有关闭

按如下步骤关闭防火墙 :

systemctl status firewalld #查看防火墙状态

systemctl stop firewalld #关闭防火墙

systemctl disable firewalld #永久关闭防火墙

**当防火墙的状态如下所示即防火墙已经关闭成功 **

然后我们再次访问:http://192.168.154.138:15672/ #将前面的IP地址换成你自己的

可以看到已经成功进入Rabbitmq web管理端

输入之前的增加的用户和密码,登录成功

至此,我们Rabbitmq搭建成功!!!

二、基本消息模型实战

完成了环境搭建,我们趁热打铁,来学习一下上一篇文章中我们所提到的六大模型之一的基本模型

1.创建一个简单的java工程:rabbitmq-learn并创建module:maven工程:rabbit-test01

2.在pom.xml文件中添加相关依赖

<!--指定 jdk 编译版本--> <build>
 <plugins>
 <plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-compiler-plugin</artifactId>
 <configuration>
 <source>8</source>
 <target>8</target>
 </configuration>
 </plugin>
 </plugins>
</build> <dependencies>
 <!--rabbitmq 依赖客户端-->
 <dependency>
 <groupId>com.rabbitmq</groupId>
 <artifactId>amqp-client</artifactId>
 <version>5.8.0</version>
 </dependency>
 <!--操作文件流的一个依赖-->
 <dependency>
 <groupId>commons-io</groupId>
 <artifactId>commons-io</artifactId>
 <version>2.6</version>
 </dependency>
</dependencies>

3.创建模型中的生产者

package com.canrioyuan.one;

import com.rabbitmq.client.*;
import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * 基本模型中的生产者:Producer
 */
public class Producer {
    //先创建一个队列
    public static final String QUEUE_NAME = "hello";

    //发消息
    public static void main(String[] args) throws IOException, TimeoutException {
        //创建一个连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        //工厂IP连接RabbitMQ的队列
        factory.setHost("192.168.154.138");
        //用户名
        factory.setUsername("root");
        //密码
        factory.setPassword("password");

        //创建连接
        Connection connection = factory.newConnection();
        //获取信道
        Channel channel = connection.createChannel();
        /**
         * 生成一个队列
         * 1、队列名称
         * 2.队列里面的消息是否持久化
         * 3.该队列是否只供一个消费者进行消费 是否进行消息共享,true:可以多个消费者进行消费 false:只能一个消费者进行消费
         * 4.是否自动删除 最后一个消费者端开连接之后 该队列是否会自动删除 true:自动删除 false:不自动删除
         * 5、其他参数
         */

        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
        //发送一个消息
        String message = "Hello world!";

        /**
         * 发送一个消费
         * 1、发送到哪个交换机
         * 2.路由的Key值是哪个 本次队列的名称
         * 3.其他参数的信息
         * 4.发送信息的消息体
         */
        channel.basicPublish("", QUEUE_NAME, null, message.getBytes());

        System.out.println("消息发送完毕");

    }
}

4.创建模型中的消费者

package com.canrioyuan.one;

import com.rabbitmq.client.*;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * 基本模型中的消费者:Consumer
 */
public class Consumer {
    //定义队列的名称 即图中的红色部分
    private final static String QUEUE_NAME = "hello";

    public static void main(String[] args) throws IOException, TimeoutException {
        //创建一个连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        //工厂IP连接RabbitMQ的队列 ,此处输入带有Rabbitmq服务的IP
        factory.setHost("192.168.154.138");
        //用户名
        factory.setUsername("root");
        //密码
        factory.setPassword("password");
        //创建一个连接
        Connection connection = factory.newConnection();
        //创建一个管道
        Channel channel = connection.createChannel();
        System.out.println("等待接收消息");
        //推送的消息如何进行消费的接口回调
        DeliverCallback deliverCallback = (consumerTag, delivery) -> {
            String message = new String(delivery.getBody());
            System.out.println(message);
        };
        //取消消费的一个回调接口 如在消费的时候队列被删除掉了
        CancelCallback cancelCallback = (consumerTag) -> {
            System.out.println("消息消费被中断");
        };
        /**
         * 消费者消费消息
         * 1.消费哪个队列
         * 2.消费成功之后是否要自动应答 true 代表自动应答 false 手动应答
         * 3.消费者未成功消费的回调
         */
        channel.basicConsume(QUEUE_NAME, true, deliverCallback, cancelCallback);

    }
}

5.测试

我们先启动生产者(Producer),启动成功后我们来到Rabbitmq web管理端,可以看到已经生成了一个名为hello的queue

同时Producer将信息为“Hello,world”的信息发送至名为hello的队列中

然后我们再启动Consumer,可以看到Consumer已经成功接收到生产者发送至hello队列的信息“Hello,world”:

至此,我们便成功实现了六大模型之一的基本模型,这也是最简单的消息模型。


总结

基本消息模型是Rabbitmq六大消息模型之一中最简单的模型,后面的模型也是在基本模型的基础上逐渐深入。所以了解基本模型的使用是非常重要的!!除此之外,如何使用与查看Rabbitmq中web 管理端,也是学习Rabbitmq必须掌握的技能。

打好第一步的基础,后面的学习才会更加容易理解!!

至此,我们今天的教程就到此结束啦~

感谢您的阅读,希望我的文章能给你带来帮助!!!



本文转载自: https://blog.csdn.net/weixin_47025166/article/details/125963684
版权归原作者 啊陈晓 所有, 如有侵权,请联系我们删除。

“【玩转Rabbitmq系列】02:Rabbitmq保姆级安装教程与基本消息模型实战”的评论:

还没有评论