1、什么是消息中间件?
  关注于数据的发送和接受,利用高效可靠的异步消息传递机制集成分布式系统。

2、什么是JMS?
  Java消息服务(java Message Service)即JMS,是一个java平台中关于面向消息中间件的API,用于在两个应用程序之间或者分布式系统中发送消息,进行异步通信。

3、什么是AMQP?
  AMQP(即advanced message queuing protocol)是一个提供统一消息服务的应用层标准高级消息队列协议,基于此协议的客户端与消息中间件可以传递消息,并不受客户端/中间件不同产品,不同开发语言等条件的限制。

4、关于JMS与AMQP的对比如下所示:

5、JMS规范,JMS相关概念。

 a、提供者,实现JMS规范的消息中间件服务器。
b、客户端,发送或者接受消息的应用程序。
c、生产者/发布者,创建并发送消息的客户端。
d、消费者/订阅者,接受并处理消息的客户端。
e、消息,应用程序之间传递的数据内容。
f、消息模式,在客户端之间传递消息的方式,JMS中定义了主题和队列两种模式。

6、JMS消息模式(队列模型,主题模型)。

1)、队列模型。

 a、客户端包括生产者和消费者。
b、队列中的消息只能被一个消费者消费。
c、消费者可以随时消费队列中的消息。

队列模型的示意图(出自慕课网):

2)、主题模式。

 a、客户端包括发布者和订阅者。
b、主题中的消息被所有订阅者消费。
c、消费者不能消费订阅之前就发送到主题中的消息。

主题模型的示意图(出自慕课网):

注意,先订阅,再消费哦!

7、JMS的编码接口:

 JMS的编码接口
a、ConnectionFactory用于创建连接到消息中间件的连接工厂。
b、Connection代表了应用程序和消息服务器之间的通信链路。
c、Destination指消息发布和接受的地点,包括队列和主题。
d、Session表示了一个单线程的上下文,用于发送和接受消息。
e、MessageConsumer由会话创建,用于接受发送到目标的消息。
f、MessageProducer由会话创建,用于发送消息到目标。
g、Message是在消费者和生产者之间传送的对象,消息头,一组消息属性,一个消息体。

8、JMS编码接口之间的关系(出自慕课网)。

流程如下所示:
  ConnectionFactory创建一个Connection连接,然后可以由Connection连接创建一个会话(或者创建多个会话,每个会话都是在一个线程上下文的,即session会话是单线程的,只在当前的上下文有效,所以会话可以做一些事务方面的处理,连接可以供多个线程使用的)。session会话可以创建MessageConsumer生产者,MessageProducer消费者。会话也可以用来创建一个Message消息的,然后MessageConsumer生产者将创建的消息发送到Destination目的地,MessageProducer消费者从指定的目的地接受到消息。

9、Spring与ActiveMq集成的操作(Spring与JMS集成的操作)。使用Spring集成jms连接ActiveMQ。

a、ConnectionFactory用于管理连接的连接工厂,此处是由Spring提供的。
    一个Spring为我们提供的连接池ConnectionFactory,JmsTemplate每次发送消息都会重新创建连接,会话和producer,非常损耗性能。所以需要使用ConnectionFactory连接池。Spring提供了两种连接池,分别是SingleConnectionFactory(返回同一个ConnectionFactory)和CachingConnectionFactory(继承SingleConnectionFactory,新增了缓存功能)。

b、JmsTemplate用于发送和接受消息的模板类。
    是Spring提供的,只需要向Spring容器中注册这个类就可以使用JmsTemplate方便的操作JMS。JmsTemplate类线程安全的,可以在整个应用范围内使用。

c、MessageListerner消息监听器。
    实现一个onMessage方法,该方法只接受一个Message参数即可对消息进行处理了。

待续......

Jms规范学习的更多相关文章

  1. MQ学习(一)----JMS规范(转发整合)

    最近进行ActiveMQ的学习,总结下已被不时之需. JMS规范: JMS即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的A ...

  2. 消息中间件系列一:入门、JMS规范、ActiveMQ使用

    一.入门 1. 消息中间件的定义 没有标准定义,一般认为,采用消息传送机制/消息队列 的中间件技术,进行数据交流,用在分布式系统的集成 2. 为什么要用消息中间件 解决分布式系统之间消息的传递.电商场 ...

  3. JAVA消息服务JMS规范及原理详解

    JAVA消息服务JMS规范及原理详解 一.简介 JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应 ...

  4. JMS规范与Kafka

    一.为什么需要消息队列 消息队列的核心作用就是三点:解耦一个系统中各个子模块的互相绑定与依赖,异步执行后台耗时逻辑,并行处理一个请求中涉及的多个操作. 以我们常见的下订单场景来说明,我们熟悉的淘宝,后 ...

  5. 实现JMS规范的ActiveMQ

    ActiveMQ是Apache软件基金会的开源产品,支持AMQP协议.MQTT协议(和XMPP协议作用类似).Openwire协议和Stomp协议等多种消息协议.并且ActiveMQ完整支持JMS A ...

  6. JMS规范简介

    一.JMS规范 Java消息服务定义: Java消息服务(Java Message Service)即JMS,是一个Java平台中面向消息中间件的API,用于在两个应用程序之间或分布式系统中发送/接受 ...

  7. JMS API学习总结(一)

    三.JMS API简析 顶级接口 P2P Pub/sub 备注 ConnectionFactory QueueConnectionFactory TopicConnectionFactory 基于工厂 ...

  8. 公司C++规范学习

    目录 公司C++规范学习 语法部分 风格/约定 公司C++规范学习 语法部分 class和struct关键字的选择:class表示被封装的用户自定义类型,不公开定义非静态数据成员,struct表示数据 ...

  9. ActiveMQ 笔记(三)JMS规范和落地产品、小知识Broker

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.JMS规范概述 1.JavaEE 概述及主要核心规范 JavaEE是一套使用Java进行企业级应用开 ...

随机推荐

  1. Swagger UI in AspNetCore WebAPI

    Swagger其实包含了三个部分,分别是Swagger Editor文档接口编辑器,根据接口文档生成code的Swagger Codegen,以及生成在线文档的Swagger UI.在AspNetCo ...

  2. XAF中多对多关系 (XPO)

    In this lesson, you will learn how to set relationships between business objects. For this purpose, ...

  3. Spring高频面试题,你能答的上哪些?(高级篇)

    1.什么是 Spring 框架?Spring 框架有哪些主要模块? 2.使用 Spring 框架能带来哪些好处? 3.什么是控制反转(IOC)?什么是依赖注入? 4.请解释下 Spring 框架中的 ...

  4. DIY客户端框架

    C/S类型的客户端做过好多轮了,在架构上每次都调整优化一部分,慢慢的形成了DIY的框架性东西. 可是最近这一看呢,已经不像MVC了,然后有一天看到了MVP概念,咦!很像.再一看,嗯,就该是MVP. M ...

  5. UITableViewStyleGrouped 类型 tableView sectionHeader 高度问题

    UITableViewStyleGrouped 类型的 tableView 在适配的时候出现很大的问题.记录一下 按照之前的方法,只需要执行以下的代码就能够很好的解决 section == 0 的时候 ...

  6. 移动OA办公——Smobiler第一个开源应用解决方案,快来get吧

    产品简介 SmoONE是一款移动OA类的开源解决方案,通过Smobiler平台开发,包含了注册.登陆.用户信息等基本功能.集成了OA中使用场景较多的报销.请假.部门管理.成本中心等核心功能. 免费获取 ...

  7. [b0020] python 归纳 (六)_模块变量作用域

    test_module2.py: # -*- coding: utf-8 -*-"""测试 模块变量的作用域 总结:1 其他模块的变量,在当前模块的任何地方,包括函数都可 ...

  8. pyhton【flask接口开发】

    使用flask进行接口开发 语言:Python3 框架:flask 在进行开发前首先得安装flask,然后才能使用.安装可以直接使用pip命令进行安装:pip install flask. 使用fla ...

  9. 关于 from scipy.misc import imread, imresize, imsave 报错的问题

    使用 from scipy.misc import imread, imresize, imsave 时出现报错,查找后发现新版本的Scipy不再包含imread,imresize,imsave,需要 ...

  10. 2.Python爬虫入门_requests

    #2019-11-23 #requests的api使用非常简单 import requests import time if __name__=='__main__': # get请求 url_get ...