如果您必须编写从消息队列中获取消息并更新数据库中的表的代码,您将如何以一种好的方式来构建它。你会如何构建它?消息是 XML 数据,表中每行一个节点。表中的行可以被更新、删除或插入。
3 回答
我不相信你提供了足够的信息来提供一个好的答案。消息是什么样的?它们的内容/类型是否不同,或者它们都只是“信息”?它们是相互交互的,还是只是数据格式的转换?OO 开发的关键之一是认识到“查找名词-n-动词”游戏(正如您所描述的那样)很少会导致最佳解决方案。它当然不会是最糟糕的,但你最终会得到数据聚合和一堆程序代码。
不过,程序代码还不错。为什么一定要OO?问题本身是否需要多态性和数据隐藏?您是否正在尝试建模任何复杂的行为?当问题很简单时,使用非 OO 解决方案并不丢人。
通常,使用消息队列的 OO 实现,您可以自己创建表示各个消息类型的类。就您期望获得的不同消息类型而言,它们是彼此派生的,这为您提供了消息的类层次结构。
使用基于配置的持久性框架,您可以直接为这些类设置存在性。
然后有一个或多个类侦听消息队列并仅保留消息,可能只有一个。它不必比这更详细。
在进行消息传递或处理任何类型的中间件时,构建 OO 代码的最佳方式是从代码中隐藏中间件 API,只处理业务逻辑。
例如看这些例子
- POJO Consuming这几乎是您描述的用例和
- 如果您需要将消息发送到消息队列,则POJO 生产。
然后你只需要定义你的数据传输对象是什么样子的;你想如何以 XML / JSON / 任何方式对线路上的东西进行编码。
这种方法的好处是您的代码现在完全与中间件无关 - 您可以换出消息队列并使用数据库或 JavaSpace 或内存中的 SEDA 或文件或任何其他通信协议或中间件 API。