栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

【Spring Cloud】RabbitMQ 消息队列服务入门

【Spring Cloud】RabbitMQ 消息队列服务入门

RabbitMQ 消息队列服务 实战案列 Linux中搭建搭建 Docker 环境 更改虚拟网络

打开 VMware 虚拟机,配置虚拟网络

更改子网的IP

安装虚拟机

打开VMware虚拟机,将 centos-8 添加到VMware虚拟机中,点击下面文件

添加成功

打开 centos-8虚拟机,检查网络

关闭虚拟机,并克隆 centos-8 或 centos-7: docker-base,改名为docker-base

使用MobaXterm_Personal工具链接虚拟机系统,运行终端

安装 Docker

参考【Docker技术实践】01-Docker入门

终端输入docker指令查看是否安装成功

搭建Rabbitmq服务器

将 docker-base (安装了docker环境)克隆一份起名为 rabbitmq ,并运行虚拟机。

设置ip

进入rabbitmq 虚拟机后依次执行下面指令,更改并检查ip信息

./ip-static
ip: 192.168.64.140
ifconfig


使用MobaXterm_Personal工具链接虚拟机系统,运行终端

下载 RabbitMQ 镜像

方式一:Linux上网络下载

镜像中已经安装了管理界面。

   docker pull rabbitmq:management

方式二: 本地拉取

从 code 下载 rabbit-image.gz,上传到服务器,然后执行镜像导入 。

  • 上传离线安装包
  • 安装
docker load -i rabbit-image.gz

Docker 启动 RabbitMQ 容器

安装完成后依次执行下面命令

  • 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
  • 重启 docker 系统服务
systemctl restart docker

创建rabbitmq文件夹,在rabbitmq文件夹下创建 rabbitmq.conf 文件,编写配置

mkdir /etc/rabbitmq
vim /etc/rabbitmq/rabbitmq.conf

# 添加两行配置:
default_user = admin
default_pass = admin

启动 rabbitmq 容器

docker run -d --name rabbit 
-p 5672:5672 
-p 15672:15672 
-v /etc/rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf 
-e RABBITMQ_CONFIG_FILE=/etc/rabbitmq/rabbitmq.conf 
rabbitmq:management
访问 RabbitMQ 管理控制台

启动 rabbitmq 容器后,访问管理控制台

http://192.168.64.140:15672

用户名密码是 admin

RabbitMQ 消息队列服务界面

RabbitMQ 六种工作模式 简单模式 实战案列 创建工程

打开Idea,新建empty project 工程,命名为rabbitmq

pom.xml

在 rabbitmq 工程中添加 Maven 模块,命名为rabitmq-api,添加com.rabbitmq-amqp-client 依赖。



    4.0.0

    cn.tedu
    rabbitmq-api
    1.0-SNAPSHOT
    
    
        8
        8
    

    
        
            com.rabbitmq
            amqp-client
            5.4.3
        
    


并在java包下创建m1包,创建Producer类实现消息的发送,Consumer类实现消息的接收。

业务代码

Producer类 生产者发送消息

package m1;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

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


public class Producer {

    public static void main(String[] args) throws IOException, TimeoutException {
        //连接RabbitMQ
        ConnectionFactory f = new ConnectionFactory();
        f.setHost("192.168.64.140"); // wht6.cn
        f.setPort(5672);
        f.setUsername("admin");
        f.setPassword("admin");
        Connection con = f.newConnection();
        Channel c = con.createChannel();//通信通道

        
        c.queueDeclare("hello-world", false, false, false, null);

        
        c.basicPublish("", "hello-world", null, "Hello world!".getBytes());
        System.out.println("消息已发送");
    }

}

Consumer类 消费者接收消息

package m1;

import com.rabbitmq.client.*;

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


public class Consumer {
    public static void main(String[] args) throws IOException, TimeoutException {
        // 连接RabbitMQ
        ConnectionFactory f = new ConnectionFactory();
        f.setHost("192.168.64.140"); // wht6.cn
        f.setPort(5672);
        f.setUsername("admin");
        f.setPassword("admin");
        Connection con = f.newConnection();
        Channel c = con.createChannel();//通信通道

        // 1.创建队列 hello-world,如果队列已经存在,不会重复创建
        c.queueDeclare("hello-world", false, false, false, null);

        // 3. 创建回调对象
        DeliverCallback deliverCallback =
                (consumerTag, message) -> {
                    byte[] a = message.getBody();
                    String s = new String(a);
                    System.out.println("收到: " + s);
                };

        CancelCallback cancelCallback = (consumerTag) ->{ };

        
        c.basicConsume("hello-world", true, deliverCallback, cancelCallback);

    }
}

测试 RabbitMQ

启动 Producer 类 发送消息。

查看 RabbitMQ 显示一条消息在队列中。

启动 Consumer 类 接收消息。

查看 RabbitMQ 发现队列中的消息已被取出,队列清空。

工作模式
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/342686.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号