后端服务器之间的通信方式?
Way to communicate between backend server ?
我必须处理 3 个不同的应用程序,而不是一个大应用程序。
我的问题是:"Can JMS be used to communicate between different servers (wildfly)"?
如果发现处理时间过长,我们可以通过这种方式为第二个应用程序添加更多服务器。这是一个有 15 台服务器的简单示例。 5 是第一个获取数据并对其进行处理的应用程序。 5 用于第二个计算某些内容的应用程序,然后是最后一个格式化它们并将它们存储到第二个数据库中的应用程序。
如果我的第二个应用程序花费的时间太长,我希望能够动态添加 3 个服务器并让它们连接到第一个 JMS Q 和第二个 JMS Q。
也许还有其他建议如何构建类似的东西?
谢谢
这是非常标准的消息。
可能取决于您的 JMS 服务器,但如果您实际使用队列,那么每个服务器都应该能够单独使用并获取要处理的消息。
更大的问题将是应用程序的设计。它们需要是无状态的,这样任何消息都可以由任何服务器以任何顺序获取并进行处理,而无需考虑其他情况。 [当然,如果有一个在所有服务器之间共享的共享后端数据提供程序,那么就可以提供上下文。]
另一个问题是事务性和恢复性。如果一条消息被服务器拾取,但由于某种原因,服务器无法处理该消息,您是否有一个允许您回滚的事务管理器,或者您是否必须将其放回队列中(要么原创一个或一个新的)自己?然后如果消息由于某种原因继续失败会发生什么,这意味着什么(特别是如果在失败的消息之后应该处理其他消息)。
所以确实需要考虑应用程序的架构,但除此之外,消息传递是一个不错的解决方案。
我必须处理 3 个不同的应用程序,而不是一个大应用程序。 我的问题是:"Can JMS be used to communicate between different servers (wildfly)"?
如果发现处理时间过长,我们可以通过这种方式为第二个应用程序添加更多服务器。这是一个有 15 台服务器的简单示例。 5 是第一个获取数据并对其进行处理的应用程序。 5 用于第二个计算某些内容的应用程序,然后是最后一个格式化它们并将它们存储到第二个数据库中的应用程序。
如果我的第二个应用程序花费的时间太长,我希望能够动态添加 3 个服务器并让它们连接到第一个 JMS Q 和第二个 JMS Q。
也许还有其他建议如何构建类似的东西?
谢谢
这是非常标准的消息。
可能取决于您的 JMS 服务器,但如果您实际使用队列,那么每个服务器都应该能够单独使用并获取要处理的消息。
更大的问题将是应用程序的设计。它们需要是无状态的,这样任何消息都可以由任何服务器以任何顺序获取并进行处理,而无需考虑其他情况。 [当然,如果有一个在所有服务器之间共享的共享后端数据提供程序,那么就可以提供上下文。]
另一个问题是事务性和恢复性。如果一条消息被服务器拾取,但由于某种原因,服务器无法处理该消息,您是否有一个允许您回滚的事务管理器,或者您是否必须将其放回队列中(要么原创一个或一个新的)自己?然后如果消息由于某种原因继续失败会发生什么,这意味着什么(特别是如果在失败的消息之后应该处理其他消息)。
所以确实需要考虑应用程序的架构,但除此之外,消息传递是一个不错的解决方案。