【问题标题】:How do I write message queue handling in an object-oriented way?如何以面向对象的方式编写消息队列处理?
【发布时间】:2008-12-06 08:52:39
【问题描述】:

如果您必须编写从消息队列中获取消息并更新数据库中的表的代码,您将如何以一种好的方式来构建它。你会如何构建它?消息是 XML 数据,表中每行一个节点。表中的行可以被更新、删除或插入。

【问题讨论】:

    标签: refactoring messaging oop


    【解决方案1】:

    我认为您没有提供足够的信息来提供好的答案。消息是什么样的?它们的内容/类型是否有所不同,或者它们都只是“信息”?它们是相互交互的,还是只是数据格式的转换? OO 开发的关键之一是认识到“查找名词-n-动词”游戏(正如您所描述的那样)很少会导致最佳解决方案。这当然不会是最糟糕的,但你最终会得到数据聚合和一堆程序代码。

    不过,程序代码还不错。为什么一定要OO?问题本身是否需要多态性和数据隐藏?您是否正在尝试建模任何复杂的行为?当问题很简单时,使用非 OO 解决方案并不丢人。

    【讨论】:

      【解决方案2】:

      通常,对于消息队列的 OO 实现,您可以自己创建代表各个消息类型的类。如果您期望获得的不同消息类型是彼此的派生类,这将为您提供消息的类层次结构。

      使用基于配置的持久性框架,您可以直接为这些类设置持久性。

      然后有一个或多个类会侦听消息队列并仅保留消息,可能只有一个。不必比这更详细。

      【讨论】:

        【解决方案3】:

        在进行消息传递或处理任何类型的中间件时,构建 OO 代码的最佳方式是对代码隐藏中间件 API,只处理业务逻辑。

        例如看看这些例子

        那么你只需要定义你的数据传输对象是什么样子的;你想如何在 XML / JSON / 中编码在线上的东西。

        这种方法的好处是您的代码现在完全与中间件无关 - 您可以换出消息队列并使用 database or JavaSpace or in-memory SEDA or files or any other communication protocol or middleware API

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-10-11
          • 2023-02-10
          • 1970-01-01
          • 1970-01-01
          • 2020-04-06
          • 2012-10-03
          • 2015-12-16
          相关资源
          最近更新 更多