

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 方法 3：使用消息队列进行分离
<a name="queue"></a>

在这种方法中，共享程序 AB.1 被转换为 Java 程序并作为应用程序 A 的一部分迁移到云中。消息队列用作云中重构的应用程序和本地旧应用程序之间的接口。通过使用这种方法，您可以将紧密耦合的大型机应用程序分解为生产者和使用者，并使它们更加模块化，以便它们可以独立运行。另一个优点是，您可以按不同的波浪迁移应用程序。

我们建议您在以下情况下使用这种方法：
+ 驻留在大型机上的应用程序可以通过消息队列与云中迁移的应用程序进行通信。
+ 无法维护程序 AB.1 的多个副本（例如，本地副本和云副本，如前两种方法）。
+ 队列架构模式可以满足驻留在大型机上的应用程序的业务需求，因为它涉及对现有应用程序的重新架构。
+ 不属于第一波的应用程序需要更长的时间（六个月或更长时间）才能迁移到云端。

## 在不同的浪潮中迁移应用程序
<a name="queue-multi-wave"></a>

当应用程序太大而无法分组到同一个迁移浪潮中时，您可以将其分成多个迁移，如下图所示，并在迁移期间保持服务连续性。通过这种方法，您可以分阶段对应用程序进行现代化改造，而无需将它们捆绑在一起。

 ![\[Migrating mainframe applications that share programs: using a message queue and multiple migration waves\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/modernization-mainframe-decoupling-patterns/images/shared-3-diff.png) 

如果您使用这种方法，请按照以下步骤操作：

1. 将应用程序 A 及其关联程序迁移（重构）到云端，同时应用程序 B 继续驻留在本地。

1. 重构应用程序 A（在云中），通过消息队列与应用程序 B（本地）通信。

1. 在本地重构应用程序 B，将共享程序 AB.1 替换为通过消息队列向应用程序 A 发送消息和接收来自应用程序 A 的消息的代理程序。

1. 成功迁移应用程序 A 后，停用本地应用程序 A 及其组件（包括共享程序）。应用程序 B 及其组件继续驻留在本地。

1. 在下一组迁移浪潮中，迁移应用程序 B 及其组件。松散耦合的队列架构继续充当云上应用程序 A 和 B 之间的接口。这可以在不影响应用程序 A 的情况下减少应用程序 B 的重构工作。