利用多个服务实例的最佳方式

时间:2014-03-24 03:37:26

标签: java spring multiprocessing distributed-computing

我们有一个名为Workflow的组件,它公开了SOAP Web服务。我们试图通过允许它使用来自WebSphere MQ的消息来在Workflow中引入异步处理。我们还想使用多个Workflow实例。因此,可以有4个工作流实例侦听同一个队列。这里的问题是,如何确保所有Workflow实例均匀使用,而不是单个实例被重载。 工作流完全用Java编写。我们广泛使用Spring和Hibernate。将向Workflow提交消息的过程是用Java编写的。对于消息处理和MQ,我们使用Spring Integration。 Message Processing

1 个答案:

答案 0 :(得分:0)

确保没有工作流实例过载的最佳方法是让每个单独的Workflow实例不使用将使其超载的消息队列中的消息。在这种情况下,只要所有工作都及时完成,您可能无法关心作品是否均匀分布。

如果您确实希望确保所有Workflow实例均匀使用,即使您的负载非常轻,以至于您不需要所有实例,您可能需要检查是否有一种方法可以重新配置WebSphere MQ以分发消息以FIFO为基础而不是基于LIFO,或者如果无法以这种方式配置WebSphere MQ,则切换到不同的消息队列。但是,我不建议这样做:即使在低负载下,只使用了一些工作流实例,系统作为一个整体也可以完美地工作,所有这些实例仅在高负载下使用。