0

我正在寻找可能的方法来开发具有这些任务的后端服务器:

  • 处理通过 RabbitMQ 到达的消息(处理基本上是这样的:使用 Hibernate 加载一些域模型实体并让它完成它的工作)
  • 应该是可插拔的。对于不同的客户,将加载不同的模块。每个客户都是一个单独的实例。
  • 其中一些模块可能必须公开不同类型的服务(REST,也许是 SOAP,...)
  • 应该使我能够通过 AOP 或其他一些机制删除大部分样板代码(如事务管理、日志记录)。

对于一些背景。我使用 Windows 服务、Castle Windsor、NHibernate 和 NServiceBus 或其他一些消息传递解决方案在 .NET 中做了这些事情。所以我可以说我偏向于单一的整体解决方案(这是我对 Java EE 和类似的印象)并且宁愿使用一些较小的框架或库来实现这一切。只要它们运行在同一个应用服务器上。

我目前正在研究的选项是:

  • 像 GlassFish 这样的 Java EE 应用程序服务器应该能够完成所有这些事情(JPA、Hibernate 等)
  • Play 框架和连接到 RabbitMQ 的 Akka Actor,Akka Actor 在其中处理消息并调用域模型方法。在 Play 中开发的 Web UI 将有一个单独的应用程序。
  • 网状
  • Spring 作为 Jetty 容器中 Java EE 的替代品

我刚开始涉足 Java 生态系统,所以如果我对某些事情感到困惑,我可以使用一些通用的指示和说明......

编辑:

添加其他选项:

4

2 回答 2

2

为此,我建议在您提到的应用程序服务器中使用 OSGi。

然后,您可以将 Web 容器用于诸如 REST 和 SOAP 服务之类的事情,并使用 OSGi 包来运行可以处理 MQ 消息的进程。

如果你想用 Spring 来管理样板的东西,它有很好的 AOP、事务管理,而且它还与 MQ 和 Hibernate 很好地集成。

使用 OSGi 包中的 Spring 集成来获取 MQ 内容。

对于应用程序服务器,您可以尝试使用 Spring DM Server。 http://www.springsource.org/dmserver

尽管我承认我自己没有使用过,但这应该会给您很大的灵活性

于 2013-01-25T09:04:32.240 回答
0

看看骆驼集成框架。它允许您定义管道(或端点,Camel 术语),并定义如何以及在何处分发不同消息的规则。
举个例子,它可以接收 HTTP 消息,对其进行转换,然后继续传递,可能通过其他媒体类型(例如队列或邮件),并且所有这些都只需最少的编码。
它具有 Java、Scala 和 Spring DSL,并且可以作为独立、Web 或 OSGi 应用程序运行。根据我的经验,我强烈推荐它。

于 2013-01-25T09:33:03.570 回答