rabbitmq部署及配置与验证(代码片段)

author author     2022-12-05     489

关键词:

1. 场景描述

朋友项目需要弄个测试环境,稍微帮忙了下,系统不复杂,但是需要自己安装mysql、Reids、Es、RabbitMq等,Mq主要用在同步用户信息与发送站内消息和短信上,RabbitMq以前没记录,刚好又重新走了一遍,记录下部署、测试、常见问题,有需要的朋友,拿走不谢!

2.解决方案

2.1 mq部署

安装说明,版本没有用最新的版本,用的2018年的3.6.15,最新的在github上下载太慢了。

2.1.1 安装erlang语言相关包
[root@ruanjianlaowang ~]# yum install epel-release
[root@ruanjianlaowang ~]# yum install erlang
[root@ruanjianlaowang ~]# wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
[root@ruanjianlaowang ~]# rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
2.1.2 安装rabbitmq
[root@ruanjianlaowang ~]#  wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.15/rabbitmq-server-3.6.15-1.el7.noarch.rpm

[root@ruanjianlaowang ~]# yum install rabbitmq-server-3.6.15-1.el7.noarch.rpm

#开启允许远程访问
[root@ruanjianlaowang ~]# cat /etc/rabbitmq/rabbitmq.config
             [rabbit, [loopback_users, []]].

假如文件或者内容不存在,添加下(3.6.6版本没有)
[root@ruanjianlaowang ~]# vi /etc/rabbitmq/rabbitmq.config
[root@ruanjianlaowang ~]# rabbitmq-plugins enable rabbitmq_management

#安装延迟插件,特定场景,非必须
[root@ruanjianlaowang ~]# cd /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.15/plugins

[root@ruanjianlaowang ~]# wget https://dl.bintray.com/rabbitmq/community-plugins/rabbitmq_delayed_message_exchange-0.0.1.ez
[root@ruanjianlaowang ~]# rabbitmq-plugins enable rabbitmq_delayed_message_exchange

#防火墙放行端口号
[root@ruanjianlaowang ~]# firewall-cmd --add-port=15672/tcp --permanent
[root@ruanjianlaowang ~]# firewall-cmd --add-port=5672/tcp --permanent

#启动关闭查看等命令
[root@ruanjianlaowang ~]# service rabbitmq-server start
[root@ruanjianlaowang ~]# service rabbitmq-server status
[root@ruanjianlaowang ~]# service rabbitmq-server restart
[root@ruanjianlaowang ~]# service rabbitmq-server stop
启动成功图:

技术图片

2.1.3 控制台新增用户和虚拟机

(1)控制台地址:http://45.122.146.23:15672/#/(阿里云的服务器,ip改成自己安装mq的地址

技术图片

(2)两个端口,控制台:15672,消息通讯:5672

技术图片

(3)添加用户

技术图片

(4)添加虚拟host

其实类似linux中的文件,默认是/目录下,创建一个虚拟host便于区分。

技术图片

(5)关联用户和虚拟host

点击用户,会弹出赋权的页面

技术图片

(6)配置完成

技术图片

2.2 rabbitmq验证

直接用官方提供的验证代码,更改下配置就可以,两个类一个发送消息,一个接受消息。

2.2.1 官网demo地址:

https://github.com/rabbitmq/rabbitmq-tutorials/blob/master/java/Send.java

2.2.2 测试

(1)idea下测试,springboot项目,两个depency就可以了,pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.laowang</groupId>
    <artifactId>mqtest</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>mqtest</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

效果图如下:

技术图片

(2)消息推送类:Send.java

package com.laowang.mqtest.hello;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.nio.charset.StandardCharsets;
public class Send 
    private final static String QUEUE_NAME = "hello";

    public static void main(String[] argv) throws Exception 
        ConnectionFactory factory = new ConnectionFactory();
//        factory.setHost("localhost");
        factory.setHost("45.122.146.23");
        factory.setPort(5672);
        factory.setVirtualHost("ruanjianlaowang");
        factory.setUsername("ruanjianlaowang");
        factory.setPassword("123");

        try (Connection connection = factory.newConnection();
             Channel channel = connection.createChannel()) 
            channel.queueDeclare(QUEUE_NAME, false, false, false, null);
            String message = "Hello World!";
            channel.basicPublish("", QUEUE_NAME, null, message.getBytes(StandardCharsets.UTF_8));
            System.out.println(" [x] Sent ‘" + message + "‘");
        
    

(3)消息接受类Recv.java:

package com.laowang.mqtest.hello;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.DeliverCallback;
public class Recv 
    private final static String QUEUE_NAME = "hello";
    public static void main(String[] argv) throws Exception 
        ConnectionFactory factory = new ConnectionFactory();
//        factory.setHost("localhost");
        factory.setHost("45.122.146.23");
        factory.setPort(5672);
        factory.setVirtualHost("ruanjianlaowang");
        factory.setUsername("ruanjianlaowang");
        factory.setPassword("123");

        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();

        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
        System.out.println(" [*] Waiting for messages. To exit press CTRL+C");

        DeliverCallback deliverCallback = (consumerTag, delivery) -> 
            String message = new String(delivery.getBody(), "UTF-8");
            System.out.println(" [x] Received ‘" + message + "‘");
        ;
        channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag ->  );
    

说明:连接信息更改为你自己的连接信息。

(4)执行效果图

发送类:

技术图片

接受类,发送了三次。
技术图片

2.3 问题总结:

(1) 虚拟host创建可以带“/”,也可以不带,配置的要注意。

(2) 防火墙记得放开端口号。


I’m 「软件老王」,如果觉得还可以的话,关注下呗,后续更新秒知!欢迎讨论区、同名公众号留言交流!

mysql主从复制及读写分离实际部署与验证(代码片段)

MySQL主从复制及读写分离前言:一、主从复制1.原理:2.准备来做主从复制和读写分离的服务器如下:3.主从复制具体步骤1.关闭所有服务器的防火墙2.Mysql主从服务器都进行时间同步3.主从服务器mysql配置4.从服务器的mysq... 查看详情

rabbitmq简介及部署群集(代码片段)

博文大纲:一、MQ简介二、什么是RabbitMQ?三、安装RabbitMQ四、部署Rabbitmq集群1)部署环境2)安装rabbitmq服务3)配置host文件,并将上述两个节点加入集群4)rabbitmq01配置群集并将rabbitmq02、03加入01群集5)访问web界面6)web页面添加vho... 查看详情

深入了解rabbitmq工作原理及简单使用(代码片段)

深入了解RabbitMQ工作原理及简单使用RabbitMQ系列文章RabbitMQ在Ubuntu上的环境搭建深入了解RabbitMQ工作原理及简单使用RabbitMQ交换器Exchange介绍与实践RabbitMQ事务和Confirm发送方消息确认——深入解读使用Docker部署RabbitMQ集群你不知道的R... 查看详情

rabbitmq部署步骤(代码片段)

...列中不断写入消息,而另一端则可以读取队列中的消息。RabbitMQ是MQ的一种。下面详细介绍一下RabbitMQ的安装与配置,话不多说了,来一起看看吧一、下载RabbitMQ是建立在强大的ErlangOTP平台上,因此安装RabbitMQ之前要先安装Erlang。er... 查看详情

rabbitmq在windows环境下的安装与使用(代码片段)

Windows下安装RabbitMQ环境配置部署环境部署环境:windowsserver2008r2enterprise官方安装部署文档:http://www.rabbitmq.com/install-windows.html官方文档说明下载erlang原因在于RabbitMQ服务端代码是使用并发式语言erlang编写的,下载地址:http://www.erla... 查看详情

rabbitmq单点及集群搭建与简单使用(代码片段)

单点搭建rabbitmq安装epel源yuminstall-yepel-release.noarchyumcleanall&&yummakecachefast&&yumrepolistenabled安装依赖包yuminstall-yerlangxmltowget安装wgethttp://www.rabbitmq.com/releases/rabbitmq-serve 查看详情

rabbitmq单机和集群部署(代码片段)

rabbitmq单机和集群部署一、单机部署1、准备工作2、部署安装2.1安装依赖环境2.2安装erlang环境2.3安装rabbitmq2.4创建RabbitMQ配置文件并修改2.5优化相关参数2.6添加RabbitMQ用户(新建用户三个mq都需要)二、集群部署1、准备工作2... 查看详情

linuxshell实现一键部署rabbitmq(代码片段)

rabbitmq前言RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语... 查看详情

rabbitmq部署及配置详解(集群部署)

RabbitMQ集群是一个或多个节点,每个节点共享用户、虚拟主机、队列、交换、绑定、运行时参数和其他分布式状态。一、RabbitMQ集群可以通过多种方式形成:通过在配置文件中列出群集节点以声明方式以声明方式使用基于D... 查看详情

keepalived介绍及群集部署(代码片段)

KeepalivedKeepalived介绍Keepalived原理Keepalived群集部署实验==配置负载调度器(主、备同样配置)====配置节点服务器==实验验证(关闭主负载调度器看看备负载调度器是否正常运行)Keepalived介绍... 查看详情

mysql主从复制及读写分离实际部署与验证(代码片段)

MySQL主从复制及读写分离前言:一、主从复制1.原理:2.准备来做主从复制和读写分离的服务器如下:3.主从复制具体步骤1.关闭所有服务器的防火墙2.Mysql主从服务器都进行时间同步3.主从服务器mysql配置4.从服务器的mysq... 查看详情

openstack运维-环境部署|报错排查[t版](代码片段)

...ct计算节点c1/2三、系统环境配置1.安装及配置MariaDB2.安装RabbitMQ3.安装memcached4.安装etcd5.安装OpenStack组件四、报错解决Error:una 查看详情

报错集:部署openstack时配置rabbitmq时报错!(代码片段)

错误信息:[root@ctmy.cnf.d]#rabbitmqctladd_useropenstackRABBIT_PASSError:unabletoconnecttonoderabbit@localhost:nodedownDIAGNOSTICS===========attem 查看详情

kubernetes部署rabbitmq3.7.x集群遇到的问题(代码片段)

问题描述在Kubernetes上部署RabbitMQ集群时,我们可以参考https://github.com/rabbitmq/diy-kubernetes-examples/tree/master/minikube下面的编排文件部署,使用上述编排文件可以部署一个正确的RabbitMQ集群。RabbitMQ的版本号是3.8。由于我们公司... 查看详情

docker-compose部署tomcat与redis及mysql(代码片段)

部署流程:导入镜像安装docker-compose容器编排工具创建配置文件运行验证步骤:技巧:镜像也可不事先下载,执行命令会自动下载,但是那样会很慢!!!1、导入镜像提示:实验环境导入前先保... 查看详情

rabbitmq安装及基本操作(含集群配置)(代码片段)

一、rabbitmq的安装因为rabbitmq是基于erlang语言开发,所有要先安装erlang1、安装erlang这里我下载的是19.2的版本,地址为https://www.erlang.org/downloads/19.2下载编译安装包:cd/mntwgethttp://erlang.org/download/otp_src_19.2.tar.gz解缩tar-zxvfotp_src_19.2 查看详情

rabbitmq部署指南及入门demo(代码片段)

...们在Centos7虚拟机中使用Docker来安装。###下载镜像dockerpullrabbitmq:3-management安装MQ执行下面的命令来运行MQ容器ÿ 查看详情

winserver安装rabbitmq服务器及配置(代码片段)

RabbitMQ是一个在AMQP协议标准基础上完整的,可复用的企业消息系统。它遵循MozillaPublicLicense开源协议,采用Erlang实现的工业级的消息队列(MQ)服务器,RabbitMQ是建立在ErlangOTP平台上。装RabbitMQ服务器必须首先安装Erlang运... 查看详情