zoukankan      html  css  js  c++  java
  • 吴裕雄天生自然Spring BootJMSJava消息服务

    点对点式
    
        在点对点式的消息通信中,消息代理获得发送者发送的消息后,将消息存入一个队列里,当有消息接收者接收消息时,将从队列里取出消息传递给接收者,这时队列中清除该消息。
        在点对点式的消息通信中,确保的是每一条消息只有唯一的发送者和接收者,但并不能说明只有一个接收者可以从队列里接收消息。这是因为队列里有多个消息,点对点式的消息通信只保证每一条消息只有唯一的发送者和接收者。
    发布/订阅式
    
        多接收者是消息通信中一种更加灵活的方式,而点对点式的消息通信只保证每一条消息只有唯一的接收者。这时我们可以使用发布/订阅式的消息通信解决多接收者的问题。和点对点式不同,发布/订阅式是消息发送者将消息发送到主题,而多个消息接收者监听这个主题。此时的消息发送者叫做发布者,接收者叫做订阅者。
        JMS(Java Messaging Service)即Java消息服务,是Java平台上有关面向消息中间件的技术规范,它便于消息系统中的Java应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发。
    1.JMS元素
    2.JMS的应用接口
    1)JMS消息代理实现
    2)JMS客户
    3)JMS生产者
    4)JMS消费者
    5)JMS消息
    6)JMS队列
    7)JMS主题
    1)JMS消息代理实现
    
        连接面向消息中间件的,JMS消息代理接口的一个实现。JMS的消息代理实现可以是Java平台的JMS实现,也可以是非Java平台的面向消息中间件的适配器。开源的JMS实现有Apache ActiveMQ、JBoss 社区所研发的 HornetQ、The OpenJMS Group的OpenJMS等等实现。
    2)JMS客户
    生产或消费基于消息的Java应用程序或对象。
    3)JMS生产者
    创建并发送消息的JMS客户。
    4)JMS消费者
    接收消息的JMS客户。
    5)JMS消息
    包括可以在JMS客户之间传递的数据对象。JMS定义了五种不同的消息正文格式,以及调用的消息类型,允许你发送并接收一些不同形式的数据,提供现有消息格式的一些级别的兼容性。常见的消息格式有StreamMessage(指Java原始值的数据流消息)、MapMessage(映射消息)、TextMessage(文本消息)、ObjectMessage(一个序列化的Java对象消息)、BytesMessage(字节消息)。
    6)JMS队列
    一个容纳那些被发送的等待阅读的消息区域。与队列名字所暗示的意思不同,消息的接受顺序并不一定要与消息的发送顺序相同。一旦一个消息被阅读,该消息将被从队列中移走。
    7)JMS主题
    一种支持发送消息给多个订阅者的机制。
    JMS的应用接口
    
    1)ConnectionFactory接口(连接工厂)
    2)Connection 接口(连接)
    3)Destination接口(目的地)
    4)Session接口(会话)
    5)MessageConsumer接口(消息消费者)
    6)MessageProducer接口(消息生产者)
    7)Message接口(消息)
    1)ConnectionFactory接口(连接工厂)
    
        用户用来创建到JMS消息代理实现的连接的被管对象。JMS客户通过可移植的接口访问连接,这样当下层的实现改变时,代码不需要进行修改。管理员在JNDI名字空间中配置连接工厂,这样,JMS客户才能够查找到它们。根据目的地的不同,用户将使用队列连接工厂,或者主题连接工厂。
    2)Connection 接口(连接)
    
        连接代表了应用程序和消息服务器之间的通信链路。在获得了连接工厂后,就可以创建一个与JMS消息代理实现(提供者)的连接。根据不同的连接类型,连接允许用户创建会话,以发送和接收队列和主题到目的地。
    3)Destination接口(目的地)
    
        目的地是一个包装了消息目的地标识符的被管对象,消息目的地是指消息发布和接收的地点,或者是队列,或者是主题。JMS管理员创建这些对象,然后用户通过JNDI发现它们。和连接工厂一样,管理员可以创建两种类型的目的地,点对点模型的队列,以及发布者/订阅者模型的主题。
    4)Session接口(会话)
    
        表示一个单线程的上下文,用于发送和接收消息。由于会话是单线程的,所以消息是连续的,就是说消息是按照发送的顺序一个一个接收的。会话的好处是它支持事务。如果用户选择了事务支持,会话上下文将保存一组消息,直到事务被提交才发送这些消息。在提交事务之前,用户可以使用回滚操作取消这些消息。一个会话允许用户创建消息,生产者来发送消息,消费者来接收消息。
    5)MessageConsumer接口(消息消费者)
    由会话创建的对象,用于接收发送到目的地的消息。消费者可以同步地(阻塞模式),或(非阻塞)接收队列和主题类型的消息。
    6)MessageProducer接口(消息生产者)
    由会话创建的对象,用于发送消息到目的地。用户可以创建某个目的地的发送者,也可以创建一个通用的发送者,在发送消息时指定目的地。
    7)Message接口(消息)
    是在消费者和生产者之间传送的对象,也就是说从一个应用程序传送到另一个应用程序。一个消息有三个主要部分:
    消息头(必须):包含用于识别和为消息寻找路由的操作设置。
    一组消息属性(可选):包含额外的属性,支持其他消息代理实现和用户的兼容。可以创建定制的字段和过滤器(消息选择器)。
    一个消息体(可选):允许用户创建五种类型的消息(文本消息、映射消息、字节消息、流消息和对象消息)。

  • 相关阅读:
    maven 的依赖包的版本更改之后,项目启动报错,相关联的资源没有在tomcat里面加载
    Maven更新后本地仓库jar后缀带有 lastUpdated
    spring+mybatis之声明式事务管理初识(小实例)
    java 详解类加载器的双亲委派及打破双亲委派
    jvm内存溢出区域和排查方法
    JVM中的新生代和老年代(Eden空间、两个Survior空间)
    什么情况下会发生堆内存溢出,栈内存溢出,结合实例说明
    投而死面试
    检查性异常
    多线程系列课程
  • 原文地址:https://www.cnblogs.com/tszr/p/15376115.html
Copyright © 2011-2022 走看看