一、JMS
定义:JMS即Java消息服务(JavaMessage Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。
简介:JMS是一种与厂商无关的 API,用来访问消息收发服务(消息中间件)。它类似于JDBC(Java DatabaseConnectivity):这里,JDBC 是可以用来访问许多不同关系数据库的API,而JMS同样提供与厂商无关的访问方式来访问消息收发服务,许多厂商目前都支持JMS,包括 IBM 的 MQSeries、BEA的 Weblogic JMS service和 Progress 的 SonicMQ,这只是几个例子。 JMS 使您能够通过消息收发服务从一个 JMS 客户机向另一个JMS客户机发送消息。消息是 JMS 中的一种类型对象,由两部分组成:报头和消息主体。报头由路由信息以及有关该消息的元数据组成。消息主体则携带着应用程序的数据或有效负载。根据有效负载的类型来划分,可以将消息分为几种类型,它们分别携带:简单文本(TextMessage)、可序列化的对象 (ObjectMessage)、属性集合 (MapMessage)、字节流 (BytesMessage)、原始值流 (StreamMessage),还有无有效负载的消息 (Message)。
二、MQ
定义:MQ全称为消息队列(Message Queue), MQ是一种应用程序与应用程序之间的通信方法。应用程序通过消息队列来通信,而无需专用连接来链接它们。消息传递指的是程序通过在消息队列中收发数据进行通信,而不是通过直接调用彼此来通信。队列的使用除去了接收和发送应用程序同时执行的要求。其中较为成熟的MQ产品有IBM的WEBSPHERE MQ。
MQ特点:MQ的消费-生产者模型的一个典型的代表,一端往消息队列中不断的写入消息,而另一端则可以读取或者订阅队列中的消息。
使用场景:在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。
三、二者之间的关系
JMS是一个用于提供消息服务的技术规范,它制定了在整个消息服务提供过程中的所有数据结构和交互流程。而MQ则是消息队列服务,是面向消息中间件(MOM)的最终实现,是真正的消息服务提供者。MQ的实现可以基于JMS,也可以基于其他规范或标准,其中ActiveMQ就是基于JMS规范实现的消息队列。
安装RabbitMQ
环境使用 centos7
wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
yum install epel-release
yum install erlang
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-
3.6.6-1.el7.noarch.rpm
yum install rabbitmq-server-3.6.6-1.el7.noarch.rpm
一般端口号为5672
vi /etc/rabbitmq/rabbitmq.config
// 编辑文本
[{rabbit, [{tcp_listeners, [5672]}, {loopback_users,["账户名"]}]}].
rabbitmq-plugins enable rabbitmq_management
cd /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.6/plugins
wget https://dl.bintray.com/rabbitmq/community-plugins/rabbitmq_delayed_message_exchange-0.0.1.ez
rabbitmq-plugins enablerabbitmq_delayed_message_exchange
firewall-cmd --add-port=15672/tcp --permanent
firewall-cmd --add-port=5672/tcp --permanent
service rabbitmq-server start
###查看状态
service rabbitmq-server status
###重启
service rabbitmq-server restart
#停止
service rabbitmq-server stop
添加用户
账号级别:
1. 超级管理员 administrator,可以登录控制台,查看所有信息,可以对用户和策略进行操作
2. 监控者 monitoring, 可以登录控制台,可以查看节点相关的信息,比如进程数,内存磁盘使用情况
3. 策略制定者 policymaker 可以登录控制台,制定策略,但无法查看节点信息
4. 普通管理员 management 仅能登录控制台
5. 其他,无法登录控制台,一般指的是提供者和消费者
添加账号:
# rabbitmqctl add_user userName password
rabbitmqctl add_user hcf hcf
# rabbitmqctl set_user_tags userName position
rabbitmqctl set_user_tags hcf administrator