ActiveMQ基础(一)

ActiveMQ

一、 消息中间件概述

  • 1.1消息中间件产生的背景 在客户端与服务器进行通讯时.客户端调用后,必须等待服务对象完成处理返回结果才能继续执行。 客户与服务器对象的生命周期紧密耦合,客户进程和服务对象进程都都必须正常运行;如果由于服务对象崩溃或者网络故障导致用户的请求不可达,客户会受到异常 点对点通信: 客户的一次调用只发送给某个单独的目标对象。
    1.2 什么是消息中间件 面向消息的中间件(MessageOrlented MiddlewareMOM)较好的解决了以上问 题。发送者将消息发送给消息服务器,消息服务器将消感存放在若千队列中,在合适 的时候再将消息转发给接收者。 这种模式下,发送和接收是异步的,发送者无需等 待; 二者的生命周期未必相同: 发送消息的时候接收者不一定运行,接收消息的时候 发送者也不一定运行;一对多通信: 对于一个消息可以有多个接收者。
    二、JMS********
  • 1.1JMS是java的消息服务,JMS的客户端之间可以通过JMS服务进行异步的消息传输
  • 1.2什么是消息模型?
  • ○ Point-to-Point(P2P) — 点对点
    ○ Publish/Subscribe(Pub/Sub)— 发布订阅在这里插入图片描述
    - 2.2.1 P2P (点对点)
    2.1.涉及到的概念:
  1. 消息队列(Queue)

  2. 发送者(Sender)

  3. 接收者(Receiver)

  4. 每个消息都被发送到一个特定的队列,接收者从队列中获取消息。队列保留着消息,直到他们被消费或超时。

  5. P2P的特点

  6. 每个消息只有一个消费者(Consumer)(即一旦被消费,消息就不再在消息队列中)

  7. 发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没有正在运行,它不会影响到消息被发送到队列

  8. 接收者在成功接收消息之后需向队列应答成功
    如果你希望发送的每个消息都应该被成功处理的话,那么你需要P2P模式。
    应用场景:
    A用户与B用户发送消息

  9. P2P模式图

  10. 涉及到的概念

  11. 消息队列(Queue)

  12. 发送者(Sender)

  13. 接收者(Receiver)

  14. 每个消息都被发送到一个特定的队列,接收者从队列中获取消息。队列保留着消息,直到他们被消费或超时。

  15. P2P的特点

  16. 每个消息只有一个消费者(Consumer)(即一旦被消费,消息就不再在消息队列中)

  17. 发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没有正在运行,它不会影响到消息被发送到队列

  18. 接收者在成功接收消息之后需向队列应答成功
    如果你希望发送的每个消息都应该被成功处理的话,那么你需要P2P模式。
    应用场景
    A用户与B用户发送消息

2.2.2Pub/Sub (发布与订阅)
Pub/Sub模式图

涉及到的概念

主题(Topic)
发布者(Publisher)
订阅者(Subscriber)
客户端将消息发送到主题。多个发布者将消息发送到Topic,系统将这些消息传递给多个订阅者。
Pub/Sub的特点
每个消息可以有多个消费者
发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息,而且为了消费消息,订阅者必须保持运行的状态。
为了缓和这样严格的时间相关性,JMS允许订阅者创建一个可持久化的订阅。这样,即使订阅者没有被激活(运行),它也能接收到发布者的消息。
如果你希望发送的消息可以不被做任何处理、或者被一个消息者处理、或者可以被多个消费者处理的话,那么可以采用Pub/Sub模型
消息的消费
在JMS中,消息的产生和消息是异步的。对于消费来说,JMS的消息者可以通过两种方式来消费消息。
○ 同步
订阅者或接收者调用receive方法来接收消息,receive方法在能够接收到消息之前(或超时之前)将一直阻塞
○ 异步
订阅者或接收者可以注册为一个消息监听器。当消息到达之后,系统自动调用监听器的onMessage方法。
应用场景:
用户注册、订单修改库存、日志存储

猜你喜欢

转载自blog.csdn.net/qq_40652350/article/details/91490322
今日推荐