MQ 有哪些?当今市面上有很多主流的消息中间件,如老牌的 ActiveMQ、RabbitMQ,炙手可热的 Kafka(大数据,高效,安全性低),阿里巴巴自主开发 RocketMQ(OPPO 用的 RocketMQ)等。
不同 MQ 的特点
- ActiveMQ JMS java13 种规范(接口)之一(jdbc)
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。
它是一个完全支持JMS规范的的消息中间件。丰富的API,
多种集群架构模式让ActiveMQ在业界成为老牌的消息中间件,在中小型企业颇受欢迎!
- Kafka
Kafka是LinkedIn开源的分布式发布-订阅消息系统,
目前归属于Apache顶级项目。Kafka主要特点是基于Pull的模式来处理消息消费,
追求高吞吐量,一开始的目的就是用于日志收集和传输。
0.8版本开始支持复制,不支持事务,对消息的重复、丢失、错误没有严格要求,
适合产生大量数据的互联网服务的数据收集业务。
- RocketMQ
RocketMQ是阿里开源的消息中间件,
它是纯Java开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点。
RocketMQ思路起源于Kafka,
但并不是Kafka的一个Copy,它对消息的可靠传输及事务性做了优化,
目前在阿里集团被广泛应用于交易、充值、流计算、消息推送、日志流式处理、binglog分发等场景。
- RabbitMQ (安全)
RabbitMQ是使用Erlang语言开发的开源消息队列系统,
基于AMQP协议来实现。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。
AMQP协议更多用在企业系统内对数据一致性、稳定性和可靠性要求很高的场景,对性能和吞吐量的要求还在其次。
RabbitMQ 比 Kafka 可靠,Kafka 更适合 IO 高吞吐的处理,一般应用在大数据日志处理或对实时性(少量延迟),可靠性(少量丢数据)要求稍低的场景使用,比如 ELK 日志收集。
RabbitMQ 的安装
(1)下载
官网下载地址: https://www.rabbitmq.com/down...
(2)下载的安装包
注意:这里的安装包是 centos7 安装的包
(3)安装步骤
1.将rabbitmq安装包上传到linux系统中
erlang-22.0.7-1.el7.x86_64.rpm #erlang环境
socat-1.7.3.2-2.el7.x86_64.rpm #内存管理依赖
rabbitmq-server-3.7.18-1.el7.noarch.rpm
2.安装Erlang依赖包
rpm -ivh erlang-22.0.7-1.el7.x86_64.rpm
rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm
3.安装RabbitMQ安装包(需要联网)
yum install -y rabbitmq-server-3.7.18-1.el7.noarch.rpm
注意:默认安装完成后配置文件模板在:
/usr/share/doc/rabbitmq-server-3.7.18/rabbitmq.config.example目录中,
需要将配置文件复制到/etc/rabbitmq/目录中,并修改名称为rabbitmq.config
4.复制配置文件
cp /usr/share/doc/rabbitmq-server-3.7.18/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config
5.查看配置文件位置
ls /etc/rabbitmq/rabbitmq.config
6.修改配置文件(参见下图:) :61 查看61行
vim /etc/rabbitmq/rabbitmq.config
7.执行如下命令,启动rabbitmq中的插件管理
rabbitmq-plugins enable rabbitmq_management
出现如下说明:
Enabling plugins on node rabbit@localhost:
rabbitmq_management
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@localhost...
The following plugins have been enabled:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
set 3 plugins.
Offline change; changes will take effect at broker restart.
8.启动RabbitMQ的服务
systemctl start rabbitmq-server
systemctl restart rabbitmq-server
systemctl stop rabbitmq-server
注意:如果启动出现问题
Job for rabbitmq-server.service failed because the control process exited with error code
需要修改主机名
查看本机主机名
hostname
修改主机名
hostnamectl set-hostname 主机名
10.关闭防火墙服务
systemctl stop firewalld
systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
11.访问web管理界面( 192.168.5.128是我自己的ip地址)
12.登录管理界面 默认的
username: guest
password: guest
关闭 RabbitMQ 之后
systemctl stop rabbitmq-server
前端界面
4、RabbitMQ 配置
1.服务启动相关
systemctl start|restart|stop|status rabbitmq-server
2.管理命令行 用来在不使用web管理界面情况下命令操作RabbitMQ
rabbitmqctl help 可以查看更多命令
3.插件管理命令行
rabbitmq-plugins enable|list|disable
5、web 管理界面介绍
(1)overview 概览
connections:无论生产者还是消费者,都需要与RabbitMQ建立连接后才可以完成消息的生产和消费,在这里可以查看连接情况
channels:通道,建立连接后,会形成通道,消息的投递获取依赖通道。
Exchanges:交换机,用来实现消息的路由
Queues:队列,即消息队列,消息存放在队列中,等待消费,消费后被移除队列。
(2)设置用户名和密码
上面的 Tags 选项,其实是指定用户的角色,可选的有以下几个:
超级管理员(administrator)可登陆管理控制台,可查看所有的信息,并且可以对用户,策略(policy)进行操作。
监控者(monitoring)可登陆管理控制台,同时可以查看 rabbitmq 节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
策略制定者(policymaker)可登陆管理控制台, 同时可以对 policy 进行管理。但无法查看节点的相关信息(上图红框标识的部分)。
普通管理者(management)仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。
其他无法登陆管理控制台,通常就是普通的生产者和消费者。
(3)新建虚拟主机
虚拟主机:为了让各个用户可以互不干扰的工作,RabbitMQ 添加了虚拟主机(Virtual Hosts)的概念。其实就是一个独立的访问路径,不同用户使用不同路径,各自有自己的队列、交换机,互相不会影响。
(4)绑定虚拟主机和用户
创建好虚拟主机,我们还要给用户添加访问权限:
点击添加好的虚拟主机:
进入虚拟机设置界面:
设置成功后
关键词:java培训