您好我有以下情况:我有一个客户端,它可以向多个服务器询问答案。根据输入,只有一个服务器可以回答。只有服务器知道他们回答什么。我曾尝试requestReply
在 Apache Camel 中使用该模式,但我有一个小问题。
public void configure() // server1
{
from("activemq:topic:topicName").choice().when(header("cc").endsWith(5)).process(new Processor() {
@Override
public void process(Exchange _exchange) throws Exception {
_exchange.getOut().setBody(".....................Returning.from server1......");
}
});
}
public void configure() //server2
{
String replyChannel = "activemq:replyChannel";
from("activemq:topic:topicName").choice().when(header("cc").endsWith(6)).process(new Processor() {
@Override
public void process(Exchange _exchange) throws Exception {
_exchange.getOut().setBody(".....................Returning from server2.");
}
});
}
....
String event = "test 1";
Object result = amqProducer.getProducerTemplate().sendBodyAndHeader("activemq:topic:topicName", ExchangePattern.InOut, event,"cc" ,event.length());
System.out.println("Result "+result);
所以我希望上面的示例返回“...从 server2 返回。”,因为长度为 6。这也是结果,但 Camel 发出警告“收到未知相关 ID 的回复”,这是由于代码server1 的,它隐式也返回一个答案。
有没有更优雅的方法来解决这个问题?