1. JMS和MQ之间的联系和区别以及RabbitMQ的搭建

一、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

  1. 首先下载erlang solution,因为RabbitMQ是基于erlang的
wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
  1. 安装
rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
yum install epel-release
yum install erlang
  1. 下载Rabbit
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-
3.6.6-1.el7.noarch.rpm
  1. 安装Rabbit
yum install rabbitmq-server-3.6.6-1.el7.noarch.rpm
  1. 开启允许远程访问(非必须)

一般端口号为5672

vi /etc/rabbitmq/rabbitmq.config
// 编辑文本
[{rabbit, [{tcp_listeners, [5672]}, {loopback_users,["账户名"]}]}].
  1. 开启 web 端管理访问(非必须,如果要开启,需要先开启允许远程访问)
rabbitmq-plugins enable rabbitmq_management
  1. 安装消息延迟插件
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
  1. 放行端口
firewall-cmd --add-port=15672/tcp --permanent

firewall-cmd --add-port=5672/tcp --permanent
  1. 启动
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. 其他,无法登录控制台,一般指的是提供者和消费者

添加账号:

  1. 命令行添加
# rabbitmqctl add_user userName password
rabbitmqctl add_user hcf hcf

# rabbitmqctl set_user_tags userName position
rabbitmqctl set_user_tags hcf administrator
  1. web端添加

你可能感兴趣的:(MQ学习笔记)