后端服务器之间的通信方式?

时间:2016-02-03 02:01:02

标签: architecture jms

我必须处理3个不同的应用程序而不是大的应用程序。 我的问题是:" JMS可以用于不同服务器之间的通信(wildfly)" ?

这样我们可以为第二个应用程序添加更多服务器,如果我们发现需要花费太长时间来处理。这里有一个简单的例子,有15个服务器。 5用于获取数据并对其执行操作的第一个应用程序。 5用于计算某些内容的第二个应用程序,然后是用于格式化它们的最后一个应用程序,并将它们存储到第二个数据库中。

如果我的第二个应用程序需要太长时间,我希望能够动态添加3个服务器并让它们连接到第一个JMS Q和第二个JMS Q.

也许其他一些建议如何建立这样的东西?

由于

enter image description here

1 个答案:

答案 0 :(得分:1)

这是非常标准的消息传递。

可能依赖于您的JMS服务器,但如果您实际使用队列,那么每个服务器应该能够单独使用并获取要处理的消息。

更大的问题是应用程序的设计。它们需要是无状态的,以便任何服务器可以按任何顺序拾取任何消息并进行处理而不考虑其他情况。 [当然,如果在所有服务器之间共享共享的后端数据提供程序,则可以提供上下文。]

另一个问题是交易和恢复。如果服务器拾取了一条消息,但由于某种原因,服务器无法处理该消息,您是否有一个允许您回滚的事务管理器,或者您是否必须将其放回队列(或者自己发起一个或一个新的?然后如果消息由于某种原因继续失败会发生什么,这意味着什么(特别是如果在失败的消息之后还有其他消息需要处理的话)。

所以真的需要考虑应用程序的架构,否则消息传递是一个合理的解决方案。