ActiveMQ 消息管理(机制)

ActiveMQ简介

ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现.

JMS 简介

  • JMS(Java Message Service),即:java消息服务应用程序接口。
  • 是Java平台面向消息中间件(MOM)的API/技术规范。
  • 场景:应用与两个应用程序之间,或者分布式系统架构中分发消息,可进行异步/同步方式的通讯,和平台API无关,基本多数的MOM都提供对JMS的支持

JMS 体系架构

  • JMS提供者

    连接面向消息中间件的,JMS接口的一个实现。提供者可以是Java平台的JMS实现,也可以是非Java平台的面向消息中间件的适配器。

  • JMS客户

    生产或消费基于消息的Java的应用程序或对象。

  • JMS生产者

    创建并发送消息的JMS客户。

  • JMS消费者

    接收消息的JMS客户。

  • JMS消息

    包括可以在JMS客户之间传递的数据的对象。

  • JMS队列

    一个容纳那些被发送的等待阅读的消息的区域。与队列名字所暗示的意思不同,消息的接受顺序并不一定要与消息的发送顺序相同。一旦一个消息被阅读,该消息将被从队列中移走。

  • JMS主题

    一种支持发送消息给多个订阅者的机制。

JMS 属性

  • Destination(接口/目标)
  • Product(生产者)
  • Consumer(消费者)
  • Broker(消息转发器)
  • P2P,Pub/Sub(模型)
  • P2P:消息队列(Queue)、发送者(Sender)、接收者(Receiver)

    Pub/Sub:主题(Topic)、发布者(Publisher)、订阅者(Subscriber)
    

ActiveMQ与JMS关系

JMS是一种规范
ActiveMQ是JMS规范的一种实现

AvtiveMQ架构图

ActiveMQ主要特性

(1)JMS1.1、J2EE1.4
(2)J2EE servers(Tomcat,JBoss4,GlassFish,WebLogic…)
(3)多语言客户端(Java,C,C++,C#,Ruby,PhP)
(4)多种协议(VM,TCP,SSL,UDP,multicast,JGroups…)
(5)Spring
(6)Ajax
(7)CXF,Axis(WebService的两个流行的框架)
(8)REST(状态传递)
(9)Message Groups,Virtual Destinations,Wildcards,Composite , Destinations
(10)持久化(journal,JDBC)
(11)性能(client-server,cluster,peer…)

ActiveMQ功能

- 多种协议
- 持久化
- 安全
- 集群
- 监控
- 其他

AvtiveMQ多种协议

URI: scheme:scheme-specific-part

eg:

VM vm://brokername 
TCP tcp://host:port 
SSL ssl://host:port 
HTTP http://host:port 
UDP udp://host:port 
peer   peer://group/brokername 
multicast multicast://IPAddress
static static(list uris) 
failover failvoer(list uris)
discovery discovery://host:port

ActiveMQ持久化

日志:

<journaledJDBC journalLogFiles="5"dataDirectory="../mq-data" />

数据库:

包括: Derby,HSQL,MySQL,SQLServer, Sybase,DB2,Oracle…
<journaledJDBC  dataSource="#mysql-ds"/>

ActiveMQ安全

认证

simpleAuthenticationPlugin
jaasAuthenticationPlugin

授权

authorizationPlugin

ActiveMQ集群

  • Master/Slave

  • Network of Brokers

ActiveMQ监控

  • JMX(Java管理扩展框架)

  • Advisory Message(通知消息)

Queue与Topic区别

使用ActiveMQ作为实现JMS中间件优点

1.多种语言和协议编写客户端。语言: Java, C, C++, C#, Python, PHP。
2.完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务)
3.对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性
4.完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务)
5.通过了常见J2EE服务器(如 Geronimo,JBoss 4, GlassFish,WebLogic)的测试,其中通过JCA 1.5 resource adaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容J2EE 1.4 商业服务器上
6.支持多种传送协议
7.从设计上保证了高性能的集群,客户端-服务器,点对点
8.支持Ajax
9.支持与Axis的整合
10.可以很容易得调用内嵌JMS provider,进行测试

ActiveMQ关键词

  • ActiveMQConnectionFactory:

    实现了jms的ConnectionFactory,Connection的工厂类 
    
  • Connection :

    JMS连接,和Java连接池的Connection差不多  Producer和Consumer用来和Broker通讯的 
    
  • Session :

    会话 
    
  • Destination :

    目的地,数据要发送到哪里或者从哪里取 
    
  • MessageProducer:

    生产者 
    
  • MessageConsumer :

    消费者 
    
  • Message :

    消息,add到队列的东西,也就是自己要处理的东西,Message有很多子接口,TextMessage或ByteMessage
    

ActiveMQ目录说明

bin:存放的是脚本文件
conf :存放的是基本配置文件     
data :存放的是日志文件
docs :存放的是说明文档
examples :存放的是简单的实例
lib :存放的是activemq所需jar包
webapps :用于存放项目的目录
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章