RebbitMQ

消息队列(MQ)

消息队列(Message Queue)是一种应用程序对应用程序的通信方法,应用程序通过读写出入队列的消息(针对应用程序的数据)来通信。而无需专用连接来链接他们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的事应用程序通过队列来通信。队列的使用除去了接受和发送应用程序同时执行的要求。其中较为成熟的MQ产品有IBM WEBSPHERE MQ等。

消息队列是典型的:生产者、消费者模型。生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,这样就实现了生产者和消费者的解耦。

AMQP
AMQP,即Advanced Message Queuing Protocol.一个提供统一消息服务的应用层标准高级消息队列协议是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端中间件不同产品,不同的开发语言等条件的限制。Erlang中的实现有RabbitDMQ等。

JMS
通常而言提到JMS ( Java MessageService )实际上是指JMS API。JMS是由Sun公司早期提出的消息标准。旨在为Java应用提供统一的消息操作。包括create、send、receive等,JMS已经成为javaEnterprise Edition的一部分。从使用角度看.
JMS和JDBC担任差不多的角色.用户都是根据相应的接口可以和实现了JMS的服务进行通信,进行相关的操作。

两者间的区别和联系:

JMS是定义了统一的接口,来对消息操作进行统一; AMQP是通过规定协议来统一数据交互的格式
JMS限定了必须使用ava语言; AMQP只是协议,不规定实现方式,因此是跨语言的。
JMS规定了两种消息模型;而AMQP的消息模型更加丰富
常见的MQ产品

ActiveMQ:基于JMS
RabbitMQ:基于AMQP协议,erlang语言开发,稳定性好
RocketMQ:基于JMS,阿里巴巴产品,目前交由- Apache基金会
Kafka:分布式消息系统,高吞吐量
RabbitMQ

是一个开源的,在AMQP基础上完整的,可复用的企业消息系统。
支持主流的操作系统,Linux、Windows、MacOX等。
多种开发语言支持,Java、Python、Ruby、.NET、PHP、C/C++、node.js等

Linux安装
创建目录
mkdir rabbitmq

安装

rpm -ivh esl-erlang-17.3-1.x86_64.rpm --nodeps --force

修改配置文件
cp /usr/share/doc/rabbitmq-server-3.4.1/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config
vi /etc/rabbitmq/rabbitmq.config

{loopback_users,[]}
启动、停止
service rabbitmq-server start
service rabbitmq-server stop

开启web界面管理工具
rabbitmq-plugins enable rabbitmq_management

重启
service rabbitmq-server restart

设置开机启动

chkconfig rabbitmq-server on

防火墙开放15672端口

/sbin/iptables -I INPUT -p tcp --dport 15672 -j ACCEPT

/etc/rc.d/init.d/iptables save

五种消息模型
RebbitMQ_第1张图片

原文链接:https://blog.csdn.net/MirabelleZWH/article/details/104158117

你可能感兴趣的:(java)