消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。对于消息中间件,常见的角色大致也就有Producer(生产者)、Consumer(消费者)
常见的消息中间件产品:
(1)ActiveMQ
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现。这里介绍的是ActiveMQ的使用。
(2)RabbitMQ
AMQP协议的领导实现,支持多种场景。淘宝的MySQL集群内部有使用它进行通讯,OpenStack开源云平台的通信组件,最先在金融行业得到运用。
(3)ZeroMQ
史上最快的消息队列系统
(4)Kafka
Apache下的一个子项目 。特点:高吞吐,在一台普通的服务器上既可以达到10W/s的吞吐速率;完全的分布式系统。适合处理海量数据。
Jms
JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。
AMQP
AMQP是一种协议,更准确的说是一种binary wire-level protocol(链接协议)。这是其和JMS的本质差别,AMQP不从API层进行限定,而是直接定义网络交换的数据格式。这使得实现了AMQP的provider天然性就是跨平台的。意味着我们可以使用Java的AMQP provider,同时使用一个python的producer加一个rubby的consumer。从这一点看,AQMP可以用http来进行类比,不关心实现的语言,只要大家都按照相应的数据格式去发送报文请求,不同语言的client均可以和不同语言的server链接。
本篇主要介绍下ActiveMQ与RabbitMQ的安装配置及使用。
首发地址:
品茗IT-同步发布
品茗IT提供在线支持:
一键快速构建Spring项目工具
一键快速构建SpringBoot项目工具
一键快速构建SpringCloud项目工具
一站式Springboot项目生成
Mysql一键生成Mybatis注解Mapper
Mysql一键生成SpringDataRest项目
如果大家正在寻找一个java的学习环境,或者在开发中遇到困难,可以加入我们的java学习圈,点击即可加入,共同学习,节约学习时间,减少很多在学习中遇到的难题。
ActiveMq可以在ActiveMq官网 下载并安装。
选择需要的版本,下载完成后,解压文件(window下用winrar/其他解压工具,linux下tar命令)并进入文件夹的bin目录下:
如图所示:
windows下可以在powershell下用:
./activemq start 或者./activemq.bat start
在cmd下只能用:
activemq.bat start
ActiveMq可以在ActiveMq官网 下载并安装。
比如下载linux版本5.15.9:
http://mirror.bit.edu.cn/apache//activemq/5.15.9/apache-activemq-5.15.9-bin.tar.gz
下载后解压:
tar -xvf apache-activemq-5.15.9-bin.tar.gz
cd apache-activemq-5.15.9/bin
启动:
./activemq start
在ActiveMQ的conf目录下,找到:
jetty-realm.properties。
jetty-realm.properties文件默认存储:
admin: admin, admin
user: user, user
规则为
username: password [,rolename …]
修改为:
cff: 123, admin
user: user, user
这样可以用cff/123登录了。
启动后浏览器输入 http://127.0.0.1:8161/ 如图所示:
点击 Manage ActiveMQ broker 跳转到 http://127.0.0.1:8161/admin/; 可以在里面查看消息队列等信息及统计。
RabbitMQ可以在RabbitMQ官网 下载并安装。
这里只说windows的安装过程:
1.下载rabbitmq-server-3.7.15.exe,下载完成后,双击安装,会提示先安装erlang,erlang的官方地址是:https://www.erlang.org/downloads
2.安装完erlang,然后安装RabbitMQ,安装过程没有任何需要注意的,就是一路往下。
3.RabbitMQ安装完成后。找到RabbitMQ的路径:
比如我的windows10会出现这个:
然后我点击RabbitMQ Service - start:
然后RabbitMQ就在5672端口监听消息了。
开启Manager:
为了启动管理服务,能够查看RabbitMQ的界面,我们需要打开RabbitMQ Command Prompt命令行,然后切换到RabbitMQ安装目录下的sbin目录,输入命令rabbitmq-plugins.bat enable rabbitmq_management
:
这里不建议自己启动命令提示符,或者使用powershell,因为会出现ERLANG_HOME not set correctly.
错误。
添加用户:
打开RabbitMQ Command Prompt命令行,然后切换到RabbitMQ安装目录下的sbin目录,输入下面命令:
# 添加用户pomit,密码123456
rabbitmqctl.bat add_user pomit 123456
# 赋予用户pomit管理员角色
rabbitmqctl.bat set_user_tags pomit administrator
网上有很多教程,不过我还是觉得这个写得好:原文
这个里面写了很多方法,但是经过试验,还是使用脚本安装省心,还不会出错。
安装erlang和rabbitmq-server:
使用脚本安装方法:
#创建erlang.repo库
curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash
#安装
yum install erlang
#创建rabbitmq-server.repo库
curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash
#安装
yum install rabbitmq-server
如果是root安装,sudo可以去掉。
**注意:**这些命令都执行完成后,还是可能有问题。比如在yum install rabbitmq-server的过程中,可能会出现:
Package: rabbitmq-server-3.7.16-1.el6.noarch (rabbitmq_rabbitmq-server) Requires: socat
这时候就要再安装socat:
wget http://ftp.tu-chemnitz.de/pub/linux/dag/redhat/el6/en/x86_64/rpmforge/RPMS/socat-1.7.2.4-1.el6.rf.x86_64.rpm
yum install socat-1.7.2.4-1.el6.rf.x86_64.rpm
#安装完成之后,重新安装rabbitmq-server
yum install rabbitmq-server
启动rabbitmq-server:service rabbitmq-server start
这时RabbitMQ就在5672端口监听消息了。
输入命令:
rabbitmq-plugins enable rabbitmq_management
新建用户:
如果这时候浏览器输入http://127.0.0.1:15672/
进行访问的话,使用guest/guest是登录不上的,因为guest用户不允许远程登录,所以需要新建一个用户,并加入到administrator角色中,然后浏览器就可以使用新建的用户登录了:
# 添加用户pomit,密码123456
rabbitmqctl add_user pomit 123456
# 赋予用户pomit管理员角色
rabbitmqctl set_user_tags pomit administrator
浏览器输入http://127.0.0.1:15672/
进行访问:
使用默认账号登录:guest/guest
到这里,安装工作搞一段落了。
Spring组件化构建
SpringBoot组件化构建
SpringCloud服务化构建
喜欢这篇文章么,喜欢就加入我们一起讨论Java Web吧!