0

我们在两台不同的机器(N1 和 S1)上托管了相同的 BW 应用程序。这些应用程序将消息发送到队列。现在这个队列的接收者是 BE 服务,它托管在两台不同的机器(N2 和 S2)上。

我们有一个要求,当 N2 和 S2 都处于活动状态时,来自 N1 的消息应该由 N2 选择,并且只有在 N2 关闭时才应该由 S2 选择。当 N2 和 S2 都处于活动状态时,来自 S1 的消息应由 S2 选择,并且仅在 S2 关闭时才应由 N2 选择。

有人可以让我知道我们如何实现这一目标吗?

4

1 回答 1

0

在来自 N1 和 S1 上的 BW 应用程序的消息中设置自定义 JMS 标头,说明消息来自哪个 BW 应用程序。

现在,在 BE 服务中,您可以读取此标头消息并检查集群中是否正在运行其他 BE 服务(我假设它们是集群的)。

例如在 N2 BE 服务伪代码中:

if (custom_jms_header_value = "N1") {
// process
}
else if (custom_jms_header_value = "S1" and cluster_check_S2) {
// S2 is down so process the message
}

并在 S2 BE 服务中反向

if (custom_jms_header_value = "S1") {
// process
}
else if (custom_jms_header_value = "N1" and cluster_check_N2) {
// N2 is down so process the message
}
于 2017-02-07T10:38:23.527 回答