zoukankan      html  css  js  c++  java
  • JAVA消息 JMS 很重要

    首先大致讲一下,java 消息模块

    消息,个人理解分为两种:1.同步消息(RPC调用)

                                        2.异步消息(本篇讲解部分)

        一.同步消息java提供了多种方案:

            最新比较常用的方式就是spring Http invoker(注:只在spring项目)和服务提供JAX-WS方式

       二.本文主要内容:异步消息

            异步消息首先分两处讲解:1.JMS(Java Message Service)

                                                2.AMQP(Advanced Message Queuing Protocol)

    1.首先来讲解下,不同于同步消息,什么是异步消息。

            

    客户端主服务不需要等待服务处理消息,简单来说就是不阻塞。

    (单纯这样通过多线程RPC访问也能达到同样效果)

    在异步消息中有两个主要概念:消息代理(message broker)

                                              目的地(destination)

    注意:不同的消息系统会提供不同的消息路由模式,但是有两种通用的的目的地:

                                              1. 队列(queue)      2.主题(topic)

    队列分好多种,大家记得就可以,本文主要讲解,远程队列,模版队列和动态队列!!!!!

          注:一个隐藏的mq概念(通道)!!!!!!!!        内容是在太多了              

    上述通用的概念可以百度,在讲解JMS也会讲解到具体的.

    第一.JMS

    (扯犊子讲下为啥需要知道JMS,jms消息的基础算是,acctiveMQ其实也是基于jms搞出来的)

        基本的概念:JMS是java message service,在java程序需要异步发送消息的时候使用的一种服务

        JMS主要的点(也是多种不同消息模式通用的点):1.点对点模式Point-to-Point(P2P)

                                                                             2.发布/订阅模式Publish/Subscribe(Pub/Sub)

       点对点:这种模式所涉及到的概念就是-1.发送者,2.接收者,3.消息队列(远程队列)

                    先来个点用时序图方便大家理解:

                        当前模式需要了解的点:1.一个生产者之对应一个消费者

                                                   2.生产者和消费者之间没有依赖,生产者只需要把消息丢到远程队列即可

                                                   3.消费者从队列获取消息,即队列中的消息只有在被消费或者超时才会被销毁(所以消费者可以不用时时监听)

                                                   (具体代码,我等结尾贴个开源代码,可以自己找)                                 

            发布/订阅模式:这种模式所涉及到的概念就是-1.发布者(Publisher),2.订阅者(Subscriber),3.主题Topic(模版队列+动态队列)

                   是时候再贴一张图了:


    当前模式需要了解的点:1.一个生产者之对应多个个消费者,即一条消息可以被多次消费。

                                 2.默认情况下,当生产者生产消息的时候,消费者必须在线同事消费,即发布主题时,订阅者必须在线监听

                              3.为了接触订阅模式,消费者与主题的时间耦合,JMS提供可持久化订阅,这块是重点,即针对于某些特定的订阅者,Topic会缓存至其订阅者消费或消息超时。


    ---------------------
    作者:狗蛋儿_312
    来源:CSDN
    原文:https://blog.csdn.net/weixin_37352094/article/details/80500202
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    单位矩阵
    向量的内积(也叫点积)
    svm
    vue.js 中this.$router.push()的使用
    Spring Bean 的加载过程
    Solr是什么?
    Servlet中如何获取用户提交的查询参数或表单数据?
    Redis面试题大全含答案
    Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
    抽象类(abstract class)和接口(interface)有什么异同?
  • 原文地址:https://www.cnblogs.com/panchanggui/p/10333693.html
Copyright © 2011-2022 走看看