java - 一个物理项目中的两个逻辑 java 项目

标签 java architecture

<分区>

我有一个项目有两个不同的部分 - 一个部分将消息发送到 rabbitMQ,另一个部分将接收和处理来自 rabbitMQ 的消息。这两部分使用相同的公共(public) java 类。例如将被发送和接收的 java class-wrapper。我想我应该在 maven 或 gradle 上创建一个 java 项目,但以两种不同的方式构建它——第一部分和第二部分。或者将它拆分为 2 个项目可能更好,但是如何共享公共(public) java 文件?

更新:

我有 2 个项目:项目 A 将对象发送到 rabbitMQ 队列,项目 B 从 rabbitMQ 队列接收对象,A 和 B 使用公共(public)类,因此这些类应该在 A 和 B 之间共享。目前,我创建了一个 maven 项目其中包括 A 和 B 作为模块。我可以同时编译它们。所以我不会把第三个(通用 Java 类)项目搞得一团糟,一切都在一个地方。所以我只想问一下如何正确和更好地做到这一点。我应该将它分成 3 个项目还是保持原样或以其他方式进行?

最佳答案

您应该创建 3 个项目。

  • A) 一个用于发送
  • B) 一个用于接收和处理
  • C) 一个用于公共(public)代码

构建时,会分别构建A+C、B+C。这使一切都与公共(public)代码分离。

之所以将通用代码保留在单独的项目中,是因为它充当定义两者之间 API 的中介。考虑大规模部署。您可能为这三个项目中的每一个都有单独的开发人员,因此您可以选择版本发布以明确定义依赖项的时间。如果所有内容都在一个项目中,则需要立即更改所有内容,但您可能不希望您的“通用代码”开发人员弄乱您的发送代码(例如,为了编译所有内容)。如果不同的构建部署在不同的机器上,只需要更新公共(public)代码,而不是所有项目。分离项目可能需要一些额外的设置工作,但会让您免于日后的许多麻烦。

除非您有始终同时部署 A+B+C 的特定需求,否则 3 个项目是最佳设计。一个例子是制作您自己的独立 TX/RX 协议(protocol)(例如对讲机),其中客户端和服务器需要位于同一位置,并且没有中央服务器。但即使在这种情况下,为了使其与使用您的协议(protocol)的其他应用程序兼容,将其分成 3 个项目仍然很有意义。

关于java - 一个物理项目中的两个逻辑 java 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33672174/

相关文章:

java - 如何在Java中实现函数参数的元组解包?

java - 为防止内存泄漏,已强制注销 JDBC 驱动程序

java - 使用 Camel 的最合适的架构

linux - 终端:发送禁止操作转义序列或控制字符

c# - 在 C# 应用程序中保护数据层

java - 检查数组元素是否包含特定值的最佳方法

Java RandomGenerator 连续重复两次没有响应

java - 更新到 Selenium 3.4 时出现 ClassCastException

architecture - 微服务版本控制最佳实践

java - 如何重新设计 java 应用程序以在新线程中提供另一个变量副本?