用Java开发后端服务器

时间:2013-01-25 08:58:59

标签: java hibernate java-ee rabbitmq akka

我正在研究使用这些任务开发后端服务器的可能方法:

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

对于某些背景。我使用Windows服务,Castle Windsor,NHibernate和NServiceBus或其他一些消息传递解决方案在.NET中做过这样的事情。所以我可以说我对一个单一的整体解决方案有偏见(这是我对Java EE和类似方法的影响),而是使用一些较小的框架或库来实现所有这些。只要它们在同一个应用程序服务器中运行。

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

  • 像GlassFish这样的Java EE应用服务器应该可以做所有这些事情(JPA,Hibernate,...)
  • Play framework和Akka actor连接到RabbitMQ,其中Akka actor处理消息并调用域模型方法。 Play中将开发一个单独的Web UI应用程序。
  • Netty
  • Spring作为Jetty容器中Java EE的替代

我刚刚开始使用Java生态系统,所以如果我把一些事情弄糊涂了,我可以使用一些通用的指示和说明......

修改

添加其他选项:

2 个答案:

答案 0 :(得分:2)

为此我建议在你提到的应用服务器中使用OSGi。

然后,您可以使用Web容器来处理REST和SOAP服务以及OSGi包,以运行可以处理MQ消息的进程。

如果你想让锅炉板托管使用Spring,它有很好的AOP,事务管理,它还可以很好地与MQ和Hibernate集成。

在OSGi包中使用Spring集成来获取MQ的东西。

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

这应该给你很大的灵活性,虽然我承认我自己没有使用它

答案 1 :(得分:0)

看看Camel Integration Framework。它允许您定义管道(或端点,它的Camel术语),并定义规则如何以及在何处分发不同的消息。
例如,它可以接收HTTP消息,对其进行转换,然后将其传递给其他媒体类型(例如队列或邮件),并且只需最少的编码即可。 它具有Java,Scala和Spring DSL,可以作为独立,Web或OSGi应用程序运行。 我强烈推荐我的经验。