我们在两台不同的机器(N1和S1)上托管相同的BW应用程序。这些应用程序将消息发送到队列。现在,此队列的接收器是BE服务,它托管在两台不同的机器(N2和S2)上。
我们有一个要求,当N2和S2都处于活动状态时,应该由N2选择来自N1的消息,并且只有当N2关闭时才应该由S2选择。同样,当N2和S2都处于活动状态时,来自S1的消息应该被S2选中,并且只有当S2关闭时才应该由N2选择。
有人可以告诉我们我们怎样才能做到这一点?
答案 0 :(得分: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
}