java message
Java消息系统
在本文中,我将讨论面向消息的中间件 (MOM)以及JMS如何在Enterprise Java中实现它。 此外,我还将讨论适合JMS使用的典型用例以及用于讨论消息传递解决方案的不同术语,例如Publisher / Sender , Destination / Topic / Queue和Subscriber / Receiver 。 我将介绍两种消息拓扑: 点对点和发布/订阅 。
资料存取层
在Java EE应用程序的典型体系结构中,数据访问层具有与数据存储进行通信的技术,例如Java Persistence API (JPA),将应用程序连接到企业信息系统(EIS)的Java Connector Architecture (JCA)。 和Java消息服务 (JMS)。
JMS的作用是什么?
JMS用于在分布式应用程序之间以松散耦合 , 异步 , 可伸缩和安全的方式传递消息。 应用程序使用称为目的地的“面向消息的中间件”发送和接收消息。
异步意味着消息的发送者和接收者不需要同时与消息队列交互。 因此,接收方可以在发送消息后的某个时间接收消息。
松散耦合是因为发送者对接收者一无所知,而接收者也不了解发送者。
可扩展性意味着系统的不同部分可以根据应用程序负载以不同的速率增长。 因此,例如,如果站点上的活动突然爆发导致跨消息传递中间件发送的消息急剧增加,则可以在接收方响应或自动缩放时将消息排队。 这在系统中提供了鲁棒性,否则将难以处理突然的负载,并且应用程序将开始表现异常或完全停止工作。
何时使用JMS?
何时最佳使用JMS取决于用例,但通常情况下,它将至少属于这些用例之一。
- 第一个用例是:应用程序应该能够发送消息,而无需立即对该消息做出响应。 可能对消息的响应是可选的,应用程序可以在没有响应的情况下继续其正常功能,或者这纯粹是一种单向通信。
- 其次。 发送者不需要依赖接收者的接口,因此可以轻松更换接收者。 这归结为需要分离应用程序的各个部分。
当接收器关闭时,应用程序应继续运行。 接收器可能损坏,应用程序将继续其正常运行。 这允许鲁棒性。
术语
在谈论JMS时,需要了解一些有用的术语,以帮助我们交流意图。
目的地是消息发送的目的地 ,被称为队列或主题 。 通常在JMS中将其定义为字符串值。 应该给目的地指定代表其功能的名称。
JMS系统具有发布者或发送者 。 这是消息的起源,而订户或接收者是消息的终止。 这里使用的术语取决于消息传递系统的拓扑结构,该拓扑结构可以是点对点或发布/订阅 。
有消息 ,这些消息有一个有效载荷,其中包含有用的信息,接收者将提取并处理这些有用的信息。 消息类型可以是文本,二进制,流,对象或属性映射。
点对点消息拓扑
在点对点设置中,消息的来源称为发件人,目的地称为队列。 在这里,消息被发送到单个目的地,并且接收者仅接收到消息的一个实例。 如果接收器关闭,则消息将保留在队列中,直到接收器启动并再次运行。
发布/订阅消息拓扑
在发布/订阅设置中,消息的来源称为发布者 ,而目的地称为主题 。 在这里,许多订阅者可以订阅一个主题,并且每个订阅者都可以接收消息的实例。 因此,一条消息发送给许多等待的订户 。 如果订户已关闭,则当它重新启动并再次运行时,它将不会收到消息。
进一步阅读
如何了解以下Java EE技术:
- 上下文和依赖注入 (CDI)
- 企业Java Bean (EJB)
- JSP,JSP和表达语言
- RESTful Web服务
- Java持久性API
RESTful Web服务的JAX-RS
我最近发布了一个迷你系列博客,介绍了JAX-RS 。 他们讨论:
- 如何管理bean验证失败 ,
- 与消费者和生产者合作 ,以及
- 如何创建JAX-RS资源实体 。
关于JAX-RS主题,有两个深入的系列:
- 什么是JAX-RS批注? 深入研究开发REST端点时最常用的注释。
- @Context注释用于什么? 深入了解@Context批注的许多用途。
接下来是什么?
如果您是Java EE的新手,那么不知所措要从企业生态系统中了解所有API。 因此,我编写并录制了视频培训课程“ 学习Java企业版” 。 这是一个为期两个小时的课程,向您介绍所有最重要的Java EE API。 关于如何使用Enterprise Java进行编程的大量演示,代码示例和练习任务,将使您成为Java EE开发人员时能说得很好。
增进知识
如果您想了解更多信息,那么有些课程将更深入地介绍每个API。 您将学习一门关于JAX-RS API的课程,通过学习如何构造RESTful端点来提高自己的知识。 WebSocket API上有一门课程,您可以学习如何开发聊天应用程序,而JSON上则有一门课程,您可以学习如何掌握JSON-Processing API课程。 即将到来的课程很多,所以为什么不现在就加入并让您的Java EE事业发展呢?
翻译自: https://www.javacodegeeks.com/2017/09/java-message-system-introduction.html
java message