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 「软件老王」,如果觉得还可以的话,关注下呗,后续更新秒知!欢迎讨论区、同名公众号留言交流!

rabbitmq部署及配置与验证的更多相关文章

  1. rabbitmq 生产环境配置

    目录 一 rabbitmq 生产部署 1.1 rabbitmq.conf 1.2 advanced.config 1.3 rabbitmq-env.conf 1.4 在生产环境中不适用的策略. 一 r ...

  2. Zookeeper集群部署与配置(三)

    在上一篇博客中我们讲解了<Zookeeper的单机配置>,此篇博客将继续介绍Zookeeper的集群部署与配置. 环境 集群配置的环境与单机配置的环境相同,唯一不同的就是集群是在多台服务器 ...

  3. (原创)OpenStack服务如何使用Keystone (二)---部署和配置Keystone中间件

    (一)Keystone端的操作 (二)如何在OpenStack服务上部署Keystone中间件 (三)详细配置keystonemiddleware 部署OpenStack时一般先安装Keystone服 ...

  4. Win10上部署Apollo配置中心

    基于Docker在Win10上部署Apollo配置中心 https://www.jianshu.com/p/a1215056ce75 http://nobodyiam.com/2016/07/09/i ...

  5. Service系统服务(六):rsync基本用法、rsync+SSH同步、配置rsync服务端、访问rsync共享资源、使用inotifywait工具、配置Web镜像同步、配置并验证Split分离解析

    一.rsync基本用法 目标: 本例要求掌握远程同步的基本操作,使用rsync命令完成下列任务: 1> 将目录 /boot 同步到目录 /todir 下   2> 将目录 /boot 下的 ...

  6. Service系统服务(五):PXE基础装机环境、配置并验证DHCP服务、配置PXE引导、验证PXE网络装机、PXE+kickstart自动装机

    一.PXE基础装机环境 目标: 本例要求为后续的PXE服务器构建提供RHEL7软件仓库,完成下列任务: 1> 在CentOS真机部署Web目录/var/www/html/rh7dvd   2&g ...

  7. Linux下Apache服务的部署和配置

    目录 Apache服务的安装 yum源安装: 目录文件 源码包安装: 目录文件: Apache中添加对php的支持 Apache中添加php对mysql数据库的支持 Apache服务的高级配置 1:配 ...

  8. Redis哨兵 部署和配置

    目录 一.哨兵简介 哨兵介绍 哨兵原理 二.哨兵部署 环境介绍 哨兵配置 三.使用验证 一.哨兵简介 哨兵介绍 Sentinel(哨兵)是用于监控redis集群中Master状态的工具,其已经被集成在 ...

  9. Tomcat服务部署及配置

    Tomcat服务部署 1.环境准备 systemctl stop firewalld setenforce 0 2.安装jdk cd /opt 将jdk和tomcat软件包拖入当前目录下进行解压 rp ...

随机推荐

  1. Linux系统调用和ANSI C文件操作的区别

    一.在Linux下对文件操作有两种方式:Linux系统调用和ANSI C文件操作. 1.Linux系统调用调用常用于I/O文件操作,系统调用常用的函数有open.close.read.write.ls ...

  2. Android官方新推的DI库 Hilt

    Android官方新推的DI库 Hilt Hilt是Google Android官方新推荐的依赖注入工具. 已加入到官方文档: Dependency injection with Hilt. 目前是a ...

  3. <VCC笔记>VCC简介与安装

    最近在学校跟着老师参与了一个代码验证的工作,需要使用Microsoft Research(微软学术)开发的VCC工具,是开源的,托管在Codeplex上.这东西英语资料极其少,中文资料基本没有.我只能 ...

  4. 关键时刻,让你的iphone拒绝掉的所有来电

    夜间被骚扰电话吵醒是会非常烦躁的,以下就是iphone的勿扰模式,配合刚出的夜间深夜模式非常的nice. 可以自定义设置时间段,每天智能切换. 也可以开启个人收藏的白名单,让家人有紧急事情也可以联系到 ...

  5. winxp系统连接服务器丢包解决方法

    winxp系统连接服务器丢包解决方法 MFC编写一个打开网页的程序,发生异常没有获取到数据. 分析步骤: 1. 用getLastError()获取到的信息,(2)- 系统找不到指定的文件. 2. 用浏 ...

  6. Thunk函数的使用

    Thunk函数的使用 编译器的求值策略通常分为传值调用以及传名调用,Thunk函数是应用于编译器的传名调用实现,往往是将参数放到一个临时函数之中,再将这个临时函数传入函数体,这个临时函数就叫做Thun ...

  7. c#,pagerank算法实现一

    PageRank让链接来"投票" 一个页面的“得票数”由所有链向它的页面的重要性来决定,到一个页面的超链接相当于对该页投一票.一个页面的PageRank是由所有链向它的页面(“链入 ...

  8. Azure Monitor(一)Application Insights

    一,引言 Azure Monitor 是 Azure 中的一项完整堆栈监视服务,是一种收集和分析遥测数据的服务.它提供了一组完整的功能来监视 Azure 资源以及其他云中和本地的资源.Azure Mo ...

  9. 01 . 容器编排简介及Kubernetes核心概念

    Kubernetes简介 Kubernetes是谷歌严格保密十几年的秘密武器-Borg的一个开源版本,是Docker分布式系统解决方案.2014年由Google公司启动. Kubernetes提供了面 ...

  10. Python三大器之生成器

    Python三大器之生成器 生成器初识 什么是生成器 生成器本身属于迭代器.继承了迭代器的特性,惰性求值,占用内存空间极小. 为什么要有生成器 我们想使用迭代器本身惰性求值的特点创建出一个可以容纳百万 ...