关键词:
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运... 查看详情