java中间件之activemq

2019-12-24  本文已影响0人  这一刻_776b

一、ActiveMQ简介

1.1 ActiveMQ是什么

ActiveMQ是由 Apache 出品的一款开源消息中间件,旨在为应用程序提供高效、可扩展、稳定、安全的企业级消息通信。它的设计目标是提供标准的、面向消息的、多语言的应用集成消息通信中间件。ActiveMQ 实现了 JMS 1.1 并提供了很多附加的特性,比如 JMX 管理、主从管理、消息组通信、消息优先级、延迟接收消息、虚拟接收者、消息持久化、消息队列监控等等

1.2 ActiveMQ主要特性

(1)支持包括 Java、C、C++、C#、Ruby、Perl、Python、PHP 等多种语言的客户端和协议。协议包含 OpenWire、Stomp、AMQP、MQTT 。

(2)提供了像消息组通信、消息优先级、延迟接收消息、虚拟接收者、消息持久化之类的高级特性

(3)完全支持 JMS 1.1 和 J2EE 1.4规范(包括持久化、分布式事务消息、事务)

(4)对 Spring 框架的支持,ActiveMQ 可以通过 Spring 的配置文件方式很容易嵌入到 Spring 应用中

(5)通过了常见的 J2EE 服务器测试,比如 TomEE、Geronimo、JBoss、GlassFish、WebLogic

(6)连接方式的多样化,ActiveMQ 提供了多种连接模式,例如 in-VM、TCP、SSL、NIO、UDP、多播、JGroups、JXTA

(7)支持通过使用 JDBC 和 journal 实现消息的快速持久化

(8)为高性能集群、客户端-服务器、点对点通信等场景而设计

(9)提供了技术和语言中立的 REST API 接口

(10)支持 Ajax 方式调用 ActiveMQ

(11)可以轻松地与 CXF、Axis 等 Web Service 技术整合,以提供可靠的消息传递

(12)可用作为内存中的 JMS 提供者,非常适合 JMS 单元测试

1.3 ActiveMQ作用

(1)消息中间件可以解决异步处理,系统解耦,流量削锋,分布式系统事务管理等问题。

(2)消息中间件默认支持点对点模式和发布订阅模式,实际工作中还可以使用双向应当模式。

(3)ActiveMQ是Apache出品,简单好用,功能强大,可以处理大部分的业务的开源消息总线。

1.4 ActiveMQ的优缺点

activemq有自己的特点和优势:

(1)activemq可以很好的运行在任何JVM上,而不只是集成到JBoss的应用服务器中;

(2)activemq支持大量的跨语言客户端;

(3)activemq支持许多不同的协议,如Ajax,REST,Stomp,OpenWire,XMPP

(4)activemq支持许多高级功能,例如MessageGroups,ExclusiveConsumer,CompositeDestinations

(5)AdvisoryMessage

(6)activemq支持可靠连接并且具有可配置的自动重连接

(7)activemq对spring有很好的支持

(8)activemq支持跨网络的分布式目的地

(9)activemq是速度非常快;一般要比jbossmq快10倍

1.5 ActiveMQ工作流程

我们通过简单的P2P模式来了解ActiveMQ的工作流程。

生产者发送消息给MQ主要步骤:

第一步:创建连接工厂实例

第二步:创建连接并启动

第三步:获取操作消息的接口

第四步:创建队列,即Queue或者Topic

第五步:创建消息发送者

第六步:发送消息,关闭资源

1.6 ActiveMQ的应用场景

(1)非均匀应用集成

ActiveMQ中间件用Java语言编写,因此自然提供Java客户端 API。但是ActiveMQ  也为C/C++、.NET、Perl、PHP、Python、Ruby 和一些其它语言提供客户端。在你考虑如何集成不同平台不同语言编写应用的时候,ActiveMQ 拥有巨大优势。在这样的例子中,多种客户端API通过ActiveMQ 发送和接受消息成为可能,无论使用的是什么语言。此外,ActiveMQ 还提供交叉语言功能,该功能整合这种功能,无需使用远程过程调用(RPC)确实是个优势,因为消息协助应用解耦。

(2)作为RPC的替代

应用使用RPC分格同步调用十分普遍。假设大多数客户端服务器应用使用RPC,包括ATM、大多数WEB应用、信用卡系统、销售点系统等等。尽管很多系统很成功,转换使用异步消息可以带来很多好处,而且也不会放弃响应保证。系统依赖同步需求典型地限制了扩展,因为最终需求将开始起作用,从而放慢整个系统。取而代之这种不好的体验,使用异步消息,附加的消息接收器可以轻松添加,假设你的应用可以解耦。

(3)两个应用之间解耦

正如之前讨论的,紧耦合架构可以导致很多问题,尤其是如果他们是分布的。松耦合架构,在另一方面,证实了更少的依赖性,能够更好地处理不可预见的改变。你不见可以在系统中改变组件而不影响整个系统,而且组件交互也相当的简单。取代使用同步方案的组件交互,组件利用异步通信。这样的松耦合遍及系统被称之为事件驱动架构(EDA)。

(4)作为事件驱动架构的主干

在之前的观点中,解耦、异步风格架构允许软件本身进一步扩展(水平的可扩展性),而不是依赖硬件的可扩展性(垂直的可扩展)。想象一下一种难以置信的流量、电子商务网站像亚马逊。但一个用户在亚马逊上购买,有许多分开的阶段贯穿,订单需要履行包括订单配置、创建发票、支付流程、订单完成、运输等。然而,但一个用户实际上提交了一个订单,用户立即得到一个页面说明,“感谢您的订单”不仅如此,没有任何延迟。用户也收到了订单已经收到的邮件说明,订单配置流程由亚马逊雇佣就是个很好的例子,第一步在一种更大的、异步流程中。每一个订单步骤直接由分开的服务奋力地处理。但用户下了订单,异步调用提交订单,但是全部订单流程不会落后于通过网页浏览器进行的同步调用。反之,订单被接受并立即被确认。这个流程中剩余的步骤一步地被处理。如果发生了问题。组织流程进行,用户会被通知。这样的异步流程提供大量的可扩展性。

(5)改善应用可扩展性

许多应用利用事件驱动架构,为了提供大量的可扩展性,包括像电子商务、政府、制造业和在线游戏等领域。使用异步消息在业务领域分离一个应用,许多其它可能性开始合并。考虑使用服务为特定任务设计应用的能力。这正是面向服务架构(SOA)的主干。每一个服务实现一个独立的功能,而且只是那个功能。应用通过这些服务构成来创建,在服务间使用异步消息实现通信。这种风格的应用设计被称之为复杂事件处理(CEP)。使用CEP,系统中组件之间的交互可以被进一步的分析跟踪。在考虑异步消息在系统的组件之间添加一种迂回的时候,这些可能性是无止境的。

二、ActiveMQ代码详解

https://blog.csdn.net/liuyuanq123/article/details/79109218

上一篇下一篇

猜你喜欢

热点阅读