gpt4 book ai didi

JMS 和 ESB - 它们是如何相关的?

转载 作者:行者123 更新时间:2023-12-03 09:58:08 24 4
gpt4 key购买 nike

对我来说,JMS 和 ESB 似乎是非常相关的东西,我试图了解它们究竟是如何相关的。

我看过一句话,JMS 可以用作 ESB 的传输 - 那么除了传输之外,这样的 ESB 中还应该存在什么? JMS 是简单的 ESB,如果不是,那么它缺少真正的 ESB 什么?

最佳答案

JMS 提供了一组用于消息传递的 API:将消息放在队列中,其他人在某个时候,可能在地理上很远的地方将消息从队列中取出并进行处理。我们已经将消息提供者和消费者在时间和位置上解耦了。即使消息消费者碰巧宕机了一段时间,我们也可以继续生产消息。

JMS 还提供发布/订阅功能,其中生产者将消息放入“主题”,任何感兴趣的方都可以订阅该主题,在消息产生时接收消息,但目前只关注队列功能。

我们已经解耦了提供者和消费者之间关系的某些方面。然而,一些耦合仍然存在。首先,就目前情况而言,每条消息都以相同的方式处理。假设我们要为不同类型的消息引入不同类型的处理:

 if ( message.customer.type == Platinum )
do something special

显然我们可以编写这样的代码,但另一种选择是拥有一个消息系统,可以将不同的消息发送到不同的地方,我们设置了三个队列:
 Request Queue, the producer(s) puts their requests here
Platinum Queue, platinum consumer processing reads from here
Standard Queue, a standard consumer reads messages from here

然后我们需要的只是队列系统本身的一点点聪明,将消息从请求队列传输到白金队列或标准队列。

所以这是一种基于内容的路由功能,是 ESB 提供的。请注意,ESB 使用 JMS 提供的基本排队功能。

第二种耦合是消费者和生产者必须就消息格式达成一致。在简单的情况下,这很好。但是,当您开始让许多生产者都将消息放入同一个队列时,您就开始遇到版本控制问题。引入了新的消息格式,但您不想更改所有现有的提供程序。
  Request Version 1 Queue  Existing providers write here
Request Version 2 Queue New provider write here, New Consumer Reads here

ESB 接收版本 1 队列消息并将它们转换为版本 2 消息并将它们放入版本 2 队列。

消息转换是另一种可能的 ESB 功能。

看看 ESB 产品,看看它们能做什么。在 IBM 工作时,我最熟悉 WebSphere ESB

关于JMS 和 ESB - 它们是如何相关的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5322675/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com