前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Jms规范学习

Jms规范学习

作者头像
别先生
发布2019-10-08 15:15:31
7800
发布2019-10-08 15:15:31
举报
文章被收录于专栏:别先生别先生

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

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

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

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

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

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

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

1)、队列模型。

代码语言:javascript
复制
1 a、客户端包括生产者和消费者。
2 b、队列中的消息只能被一个消费者消费。
3 c、消费者可以随时消费队列中的消息。

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

2)、主题模式。

代码语言:javascript
复制
1 a、客户端包括发布者和订阅者。
2 b、主题中的消息被所有订阅者消费。
3 c、消费者不能消费订阅之前就发送到主题中的消息。

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

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

7、JMS的编码接口:

代码语言:javascript
复制
1 JMS的编码接口
2 a、ConnectionFactory用于创建连接到消息中间件的连接工厂。
3 b、Connection代表了应用程序和消息服务器之间的通信链路。
4 c、Destination指消息发布和接受的地点,包括队列和主题。
5 d、Session表示了一个单线程的上下文,用于发送和接受消息。
6 e、MessageConsumer由会话创建,用于接受发送到目标的消息。
7 f、MessageProducer由会话创建,用于发送消息到目标。
8 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参数即可对消息进行处理了。

待续......

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 CMQ 版
消息队列 CMQ 版(TDMQ for CMQ,简称 TDMQ CMQ 版)是一款分布式高可用的消息队列服务,它能够提供可靠的,基于消息的异步通信机制,能够将分布式部署的不同应用(或同一应用的不同组件)中的信息传递,存储在可靠有效的 CMQ 队列中,防止消息丢失。TDMQ CMQ 版支持多进程同时读写,收发互不干扰,无需各应用或组件始终处于运行状态。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档