美文网首页
activeMQ了解一下(一)

activeMQ了解一下(一)

作者: 夏日橘子冰 | 来源:发表于2018-07-19 15:34 被阅读0次

    正式介绍activeMQ之前,让我们先了解几个名词

    一、JMS消息服务

    即java的消息服务,JMS的客户端之间通过JMS进行异步的消息传输

    1.消息模型
    P2P point to point 点对点模式
    Pub/Sub publish/Subscribe 发布订阅模式
    p2p.png

    每个消息被发送到队列,接收者从队列获取消息。队列里一直保留消息,直到消息被消费或超时。

    P2P特点:
    • 每个消息只能有一个消费者,一旦消费,即不在队列中
    • 发送者和接收者不存在依赖性
    • 接收者在接收成功后,要向队列应答成功。无特殊配置时,默认自动commit
    使用场景:希望每个消息都被成功处理,且只有一个消费者
    publish_subscribe.png

    多个发布者将消息发送到主题,系统将消息传递给多个订阅者

    Pub/Sub特点
    • 每个消息可以有多个消费者
    • 发布和订阅有时间上依赖性,针对某个topic,要先创建一个订阅者才能消费消息,且订阅者必须保持运行状态
    • 为缓和这种严格的时间相关性,JMS允许订阅者创建一个可持久化的订阅。这样,即使订阅者没有被激活(运行),它也能接收到发布者的消息。
    使用场景:

    如果你希望发送的消息可以不被做任何处理、或者被一个消息者处理、或者可以被多个消费者处理的话,那么可以采用Pub/Sub模型

    2.消息如何消费

    1).同步:调用使用receive方法,此方法在接收到消息之前会一直阻塞
    2).异步:注册消息监听器,消息到达时,系统自动调用监听器的onMessage方法

    二,消息队列中间件

    1,应用场景
    (1) 异步处理

    例如:注册后发送短信、邮件,下单后调用第三方支付接口等,将需要执行的消息放入队列,客户端会迅速收到响应,有利于用户体验

    (2)应用解耦

    例如:在业务复杂的项目里,一个请求涉及跨系统,跨接口操作,当第三方、第四方系统网络异常等时,导致请求失败,耦合太强。

    (3)流量削锋

    例如:秒杀活动,秒杀时不做业务处理,交给消息队列,并限制消息队列的长度,可有效控制参与人数并防止高流量压垮应用

    (4)日志处理

    例如:kafka应用,日志采集写入kafka队列,此队列复杂接收,存储和转发,订阅者订阅kafka里的日志数据

    (5)消息通讯

    如:消息室,微博等

    相关文章

      网友评论

          本文标题:activeMQ了解一下(一)

          本文链接:https://www.haomeiwen.com/subject/qfdtmftx.html