ActiveMQ入门——基本概念了解

来源:互联网 发布:lamp一键安装包 linux 编辑:程序博客网 时间:2024/06/05 16:48

基本构件(组件)

  1. ConnectionFactory
    创建Connection对象的工厂,针对两种不同的jms消息模型,分别有QueueConnectionFactory和TopicConnectionFactory两种。
    可以通过JNDI来查找ConnectionFactory对象。

  2. Destination
    Destination的意思是消息生产者的消息发送目标或者说消息消费者的消息来源。对于消息生产者来说,
    它的Destination是某个队列(Queue)或某个主题(Topic);对于消息消费者来说,它的Destination也是某个队列或主题(即消息来源)。
    所以,Destination实际上就是两种类型的对象:Queue、Topic可以通过JNDI来查找Destination。

  3. Connection
    Connection表示在客户端和JMS系统之间建立的链接(对TCP/IP socket的包装)。Connection可以产生一个或多个Session。
    跟ConnectionFactory一样,Connection也有两种类型:QueueConnection和TopicConnection。

  4. Session
    Session是我们操作消息的接口。可以通过session创建生产者、消费者、消息等。Session提供了事务的功能。当我们需要使用session发送/接收多个消息时,
    可以将这些发送/接收动作放到一个事务中。同样,也分QueueSession和TopicSession。

  5. 消息的生产者
    消息生产者由Session创建,并用于将消息发送到Destination。同样,消息生产者分两种类型:QueueSender和TopicPublisher。
    可以调用消息生产者的方法(send或publish方法)发送消息。

  6. 消息消费者
    消息消费者由Session创建,用于接收被发送到Destination的消息。两种类型:QueueReceiver和TopicSubscriber。
    可分别通过session的createReceiver(Queue)或createSubscriber(Topic)来创建。当然,也可以session的creatDurableSubscriber方法来创建持久化的订阅者。

  7. MessageListener
    消息监听器。如果注册了消息监听器,一旦消息到达,将自动调用监听器的onMessage方法。EJB中的MDB(Message-Driven Bean)就是一种MessageListener。

各组件关系

连接工厂-->生成连接-->创建会话(创建生产者和消费者)             消息                 消息生产者---------------->目的地------------->消费者      1 --------(1)PTP(Queue)---------- 1      1 --------(2)pub/sub(Topic)------ n

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

消费消息有两种方式:

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

消息:

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

编程模式

消息产生者向JMS发送消息的步骤

  1. 创建连接使用的工厂类JMS ConnectionFactory
  2. 使用管理对象JMS ConnectionFactory建立连接Connection
  3. 使用连接Connection 建立会话Session
  4. 使用会话Session和管理对象Destination创建消息生产者MessageSender
  5. 使用消息生产者MessageSender发送消息

消息消费者从JMS接受消息的步骤

  1. 创建连接使用的工厂类JMS ConnectionFactory
  2. 使用管理对象JMS ConnectionFactory建立连接Connection
  3. 使用连接Connection 建立会话Session
  4. 使用会话Session和管理对象Destination创建消息消费者MessageReceiver
  5. 使用消息消费者MessageReceiver接受消息,需要用setMessageListener将MessageListener接口绑定到MessageReceiver
    消息消费者必须实现了MessageListener接口,需要定义onMessage事件方法。
原创粉丝点击