【问题标题】:How to deal with 3+ message formats in mule?如何处理mule中的3+消息格式?
【发布时间】:2013-08-08 21:09:14
【问题描述】:

假设我在 Mule ESB 中处理 3 种(非常)不同的消息格式,我将它们称为 A、B 和 C。它们可以是 XML(通过套接字)、一些自定义文本格式和 SOAP 传输例如,另一种 XML(与通过套接字传输的不同)。它们都可以相互转化。 A、B 和 C 携带相同的信息,只是格式不同。

他们每个人在流程中都有自己的入口点,一些格式验证等。

但是,我需要在所有这些中执行一些(很多)逻辑,例如处理/提取一些信息、基于内容的路由、丰富等。

我该怎么办?我的意思是,我对集成模式进行了一些研究,但没有发现任何关于这种情况或类似情况的信息。

更简单的方法听起来像是采用一种格式(让我们采用 B)作为我的“主要流程”的“默认”之一,并基于它实现所有常见逻辑。然后,每条到达的消息都会被转换为 B,然后再次转换为目标格式,即使两个点使用相同的格式。

例子:

1) 一个“A”命中我的应用程序,然后将其转换为“B”以执行通用逻辑,然后再次转换为“A”以进行交付。

2) 一个“C”命中我的应用程序,然后将其转换为“B”以执行通用逻辑,然后将其转换为“A”以交付。

那么,我的问题是,Mule 是否有一个功能可以为我提供更好的方法来做这样的事情,或者上面的解决方案看起来很合理?

提前致谢。

【问题讨论】:

    标签: integration mule messaging design-patterns esb


    【解决方案1】:

    有几个选项,其中任何一个都可以在 Mule 中实现。前两个与您的建议接近。

    规范化器:http://eaipatterns.com/Normalizer.html

    规范数据模型:http://eaipatterns.com/CanonicalDataModel.html

    路由单:http://eaipatterns.com/RoutingTable.html

    信封:http://eaipatterns.com/EnvelopeWrapper.html

    您使用哪一个取决于您的消息以及您需要对它们做什么。

    例如,使用规范数据模型,您可以为每个传入类型构建一个单独的流:

    • 以自己的格式接收对象。
    • 将该对象转换为规范对象。
    • 将该消息传递到主处理流程。

    主流程只需要知道如何处理该对象。

    任何需要原始对象的端点都将位于可以反转转换的转换器后面。

    您可以选择现有对象之一并使用消息变量来记住原始格式或创建一个记住原始类型本身的新对象。

    【讨论】:

    • 同意海报关于规范数据模型模式的建议。作为另一种选择,Normalizer 模式似乎暗示所有消息都被接收到同一个端点,从那里它们被路由到不同的翻译器。这似乎不是这里的情况。
    • 规范数据模型看起来确实更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-02
    • 2013-09-09
    • 2013-01-14
    • 2017-06-22
    • 2014-09-11
    • 1970-01-01
    • 2011-05-25
    相关资源
    最近更新 更多