ActiveMQ的一些基本概念及对Broker的理解

一、什么是ActiveMQ

ActiveMQ是一种开源的基于JMS(Java Message Servie)规范的一种消息中间件的实现,ActiveMQ的设计目标是提供标准的,面向消息的,能够跨越多语言和多系统的应用集成消息通信中间件。

二、什么时候需要用ActiveMQ

多个项目之间集成
(1) 跨平台
(2) 多语言
(3) 多项目
降低系统间模块的耦合度,解耦
(1) 软件扩展性
系统前后端隔离
(1) 前后端隔离,屏蔽高安全区

三、基本构件和概念

  • ConnectionFactory
    创建Connection对象的工厂,针对两种不同的jms消息模型,分别有QueueConnectionFactory和TopicConnectionFactory两种。
    可以通过JNDI来查找ConnectionFactory对象。
  • Destination
    Destination的意思是消息生产者的消息发送目标或者说消息消费者的消息来源。对于消息生产者来说,
    它的Destination是某个队列(Queue)或某个主题(Topic);对于消息消费者来说,它的Destination也是某个队列或主题(即消息来源)。
    所以,Destination实际上就是两种类型的对象:Queue、Topic可以通过JNDI来查找Destination。
  • Connection
    Connection表示在客户端和JMS系统之间建立的链接(对TCP/IP socket的包装)。Connection可以产生一个或多个Session。
    跟ConnectionFactory一样,Connection也有两种类型:QueueConnection和TopicConnection。
  • Session
    Session是我们操作消息的接口。可以通过session创建生产者、消费者、消息等。Session提供了事务的功能。当我们需要使用session发送/接收多个消息时,
    可以将这些发送/接收动作放到一个事务中。同样,也分QueueSession和TopicSession。
  • 消息的生产者
    消息生产者由Session创建,并用于将消息发送到Destination。同样,消息生产者分两种类型:QueueSender和TopicPublisher。
    可以调用消息生产者的方法(send或publish方法)发送消息。
  • 消息消费者
    消息消费者由Session创建,用于接收被发送到Destination的消息。两种类型:QueueReceiver和TopicSubscriber。
    可分别通过session的createReceiver(Queue)或createSubscriber(Topic)来创建。当然,也可以session的creatDurableSubscriber方法来创建持久化的订阅者。
  • MessageListener
    消息监听器。如果注册了消息监听器,一旦消息到达,将自动调用监听器的onMessage方法。EJB中的MDB(Message-Driven Bean)就是一种MessageListener。

四、各组件关系

连接工厂–>生成连接–>创建会话(创建生产者和消费者)

			 消息                 消息
生产者---------------->目的地------------->消费者

	  1 --------(1)PTP(Queue)---------- 1
	  1 --------(2)pub/sub(Topic)------ n

如果你希望发送的每个消息都应该被成功处理的话,那么你需要P2P模式。

五、消费消息有两种方式

  • 同步消费:receive从目的地获取消息,阻塞直到数据到达
  • 异步消费:注册消息监听器,定义数据到达时的动作

六、消息

消息头:getter和setter
消息属性:除消息头以外的消息信息
消息体:JMS定义的消息类型:TextMessage、MapMessage、ByteMessage、StreamMessage、ObjectMessage

七、编程模式

  • 消息产生者向JMS发送消息的步骤
  • 创建连接使用的工厂类JMS ConnectionFactory
  • 使用管理对象JMS ConnectionFactory建立连接Connection
  • 使用连接Connection 建立会话Session
  • 使用会话Session和管理对象Destination创建消息生产者MessageSender
  • 使用消息生产者MessageSender发送消息
  • 消息消费者从JMS接受消息的步骤
    创建连接使用的工厂类JMS ConnectionFactory
  • 使用管理对象JMS ConnectionFactory建立连接Connection
  • 使用连接Connection 建立会话Session
  • 使用会话Session和管理对象Destination创建消息消费者MessageReceiver
  • 使用消息消费者MessageReceiver接受消息,需要用setMessageListener将MessageListener接口绑定到MessageReceiver
  • 消息消费者必须实现了MessageListener接口,需要定义onMessage事件方法。

八、对Broker的理解

个人理解,Broker是MQ的一个实例,或者叫一个节点。是消息队列核心,相当于一个控制中心,负责路由消息、保存订阅和连接、消息确认和控制事务

Broker接口
定义了一些获取broker本身相关信息,添加connection、destination、session、消息生产者、控制事务的接口

发布了1 篇原创文章 · 获赞 0 · 访问量 11

猜你喜欢

转载自blog.csdn.net/CoderPeople/article/details/105065490