在云平台上,通常采用服务请求者和服务提供者之间的同步通信,即请求者在处理之前等待响应。同步通信通常用于预期完成时间相对较短的服务(秒或分钟)。异步服务也可以在云平台上使用。在异步服务模式中,服务请求者将请求排队到一个端口(例如WSDL文档中指定的端口),但是服务请求者会执行其他工作,而不是等待响应。当服务提供者准备发送响应时,它使用SOAP中的应答地址(如Reply-to Address)发送响应。这种方法适用于长期运行的事务,使用异步通信可以避免用户等待很长时间。
服务将消息(消息)发送到收件人可从中获取消息的位置,这是消息传递机制,它实现异步通信。消息传递支持松散耦合的分布式接口,其中发送方和接收方只需要确定消息的格式(通常是XML数据)。消息传递也经常用作云服务之间的接口。
我们使用JMS来探索消息传递机制和实现。JMS与特定的消息服务器无关,就像JDBC与数据库一样。JMSAPI,开发人员可以创建消息、发送消息、接收消息和读取消息。JMSAPI确保消息只传递一次,因此非常可靠。JMS非常适合不同平台之间的服务接口。例如,使用JMS来实现平台与客户IT系统的对接。一些大型供应商有自己的IT系统。当订单发出时,供应商的IT系统会向云平台发送JMS消息。该平台接收运输信息并更新平台上的数据,因此,订单的客户获得了订单的最新状态。
JMS提供了两种消息传递机制:队列模式和发布-订阅模式。
(一)队列模式
队列,也称为点对点,在概念上类似于邮箱,对应的API是javax.jms.Queue。这种方式需要一个队列。发送方向接收方接收消息的队列发送消息。发送和接收不需要同步,每个消息只有一个使用者。
(二)发布-订阅模式
这种方式有点像公告板,相应的API是javax.jms.Topk。发送者按主题发送消息,系统将来自同一类主题的多条消息分发给订阅该主题的多个收件人。
无论哪种方式,JMS都发送和接收相同的代码。对于接收者来说,有两种接收方式。
①使用接收方法。如果消息尚未到达,请等待;如果超过指定时间,则报告超时错误。
②使用消息侦听器的on Message方法。当消息到达时,JMS服务器通过此方法传递消息。
此外,消息处理程序可以是消息驱动的EJB、Java应用程序或其他语言。消息驱动的EJB可以侦听并处理消息(例如调用其他EJB)。与会话Bean和JPA实体不同,消息驱动Bean不需要客户机程序。调用此消息驱动Bean的方法是向消息服务器发送消息。
(三)如何发展信息传递程序
通常,Web应用服务器提供一个或多个默认JMS服务器(JMS提供程序)。它提供了一个消息管理和传递系统。在此基础上,我们可以在Web应用服务器上定义。
数据库连接工厂:包括队列连接工厂和主题连接工厂。连接工厂是到JMS服务器的连接。它有JNDI名称、总线名称等等。您可以将其视为数据库连接。
队列或主题:它有一个JNDI名称。如果定义主题,还需要定义主题空间。在JMSAPI中,队列和主题统称为目的地。你可以把它想象成一个数据表。
发送程序是:
·使用注解注入连接工厂和目的地;
·通过连接工厂,创建到JMS服务器的连接;
·使用注解注入连接工厂和目的地;(www.xing528.com)
·通过连接工厂,创建到JMS服务器的连接;
·基于连接创建会话(会话),会话用于创建和读取消息;
·根据会话创建消息用户;
·启动连接;
·基于消息用户接收消息(可能有多条消息);
·关闭邮件用户、会话和连接。
异步接收器是两类。首先,创建一个单独的消息侦听器类,该类实现消息侦听器接口。在该类中实现on Message方法。此方法定义消息接收后的操作。然后将接收方(另一个类)创建为:
·使用注解注入连接工厂和目的地;
·通过连接工厂,创建到jms服务器的连接;
·基于连接创建会话(会话),会话用于创建和读取消息;
·创建消息用户(消息使用者);
·创建消息侦听器(消息侦听器)对象(在开头创建的类的对象),将侦听器对象与消息用户关联;
·启动连接;
·侦听消息,直到用户中止程序,在中止之前,需要关闭消息用户、会话和连接;
·当消息到达时,系统会自动调用上面创建的侦听器的on Message方法。
此外,JMS提供Queue Browser类来查看队列中的每个消息。
(四)消息接口实例
智能企业系统使用JMS消息传递服务,向零售商店、批发商和供应商提供消息传递服务。从零售店到批发商的订单通常包含来自多个销售商的产品。按照传统的方式,批发商单独打电话给制造商,询问制造商有多少库存。订单服务提供自动服务,帮助零售商店立即获得订单确认信息。向零售商店的批发商发送订单信息的过程。批发商收到订单(虚线)并检查库存。如果自己的库存不足,那么批发商系统会自动向多个供应商发送订单。每个供应商都收到订单并检查其库存。如果库存中没有足够的货物,请在当前库存中返回数量值;如果有足够的货物,则返回所需的数量值。所有这些信息都被发送到批发商确认队列中。批发商监听队列(粗行),并根据结果将信息返回给零售商确认队列。零售商店收到自己订单的结果。零售商店的订单处理,跨越多个系统,并在很短的时间内获得结果。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。