Java:Spring中的JMS入门

  JMS 是 Java 面向消息的中间件 (MOM) 的实现,并且是用于在 MQ(消息队列)服务器中发送和接收消息的 DeFacto 标准。 MQ 服务器充当消息发送方和接收方之间的中间人;这是在消息队列的帮助下完成的。

  Spring JMS 可以有效地用于建立应用程序之间的通信。可以开发一个面向消息的中间件,通常称为 MQ 服务器,以建立通信。消息队列或 MQ 服务器的主要好处是它支持松散耦合的异步应用程序集成。

  假设,在一个不同的系统中,运行在不同机器上的应用程序需要通信/我们有什么选择?当然,我们可以使用 SOAP 或 REST Web 服务,但我们还有其他选择吗?毫无疑问,Web 服务是一个可行的选择,但在许多情况下,它可能不可用甚至无法使用。在这种情况下,我们可以使用 JMS 并通过实现 MQ 服务器将我们的消息放入消息队列中。想要发送消息的应用程序将消息移交给 MQ 传输。然后它在向发送者确认任何回执之前立即将消息写入磁盘。在消息交换期间,协议确保消息被传递并且没有消息丢失。

  消息传递技术

  有两种主要的消息传递模型:点对点和发布者-订阅者。 MQ 服务器保留了一个队列和主题列表,它们分别遵循这两种模型。在这两者中,MQ 服务器模型使应用程序能够连接并发送和接收消息。

  队列遵循点对点消息交换模型。当生产者发送消息时,它会被放入服务器维护的队列中。消息被传递给作为下一个消费者立即连接的那个。发送者和接收者是预定义的和静态的。

 

  另一方面,主题是发布者-订阅者消息模型的实现。这里的想法更加通用,因为任意数量的客户端都可以订阅主题内的消息。因此,当发布特定主题的消息时,它会传递给所有订阅该主题的客户端。这种技术更具动态性,因为可以在运行时更改指定的发布者订阅者角色。

  JMS的关键组件如下:

  JMS Provider:它是一个提供消息代理服务的MOM实现。 此外,它还提供了管理和控制所需的其他功能,这些功能对于功能齐全的消息传递产品(ActiveMQ、IBM MQ 等)是必不可少的。

  JMS 客户端:JMS 客户端是接收和发送消息的应用程序。

  JMS 生产者或发布者:它表示两种类型的 JMS 客户端,它们使用消息队列或主题发送消息,如上所述。

  JMS 消费者或订阅者:它表示两种类型的 JMS 客户端,它们使用消息队列或主题接收消息,如上所述。

  JMS 应用程序:托管一个 JMS 提供者和许多 JMS 客户端的 JMS 应用程序。

  ActiveMQ 服务器

  有许多可用的 MQ 服务器实现,例如 IBM MQ、RabbitMQ、Apache ActiveMQ 等。 在这里,我们将主要关注 ActiveMQ,因为它很流行、开源、免费并且是用 Java 编写的。 ActiveMQ 支持许多跨语言客户端和协议,例如 C、C++、C#、Ruby、Perl、Python、PHP,当然还有 Java。 ActiveMQ 可以很容易地嵌入到 Spring 应用程序中,并且 Spring BOOT 支持为它提供了一个现成的启动器。

  它是如何工作的?

  生产者连接到 MQ 服务器并开始向队列或主题发送消息。 消费者连接到服务器并开始从队列或感兴趣的主题接收消息。 从使用 API 的角度来看,它们都是相同的。 从 JMS 1.1 开始,API 已经统一,在处理队列或主题时没有区别。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值