gpt4 book ai didi

java - 如何根据 Camel Exchange 的起源地进行不同的处理?

转载 作者:行者123 更新时间:2023-12-01 15:02:46 27 4
gpt4 key购买 nike

我有一个具有多个入口点(servlet 和 direct)的路由。当通过 servlet 激活时,它需要执行某些工作。这项工作必须针对 servlet 请求完成(即使存在不良行为者)。如果是直接交换,则不得执行此工作。这是代码示例:

// In a Route Builder somewhere.
from("servlet:///myService").inOut("direct:myService");
from("direct:myService").process(new ConditionalProcessor());

// Implementation of processor above.
public class ConditionalProcessor implements Processor {

@Override
public void process(Exchange exchange) throws Exception {
if(comesFromServlet(exchange)){
// Logic for Servlet.
} else {
// Logic for direct and other.
}
}

/**
* Must return true if the exchange started as a request to the servlet.
* Otherwise must return false.
*
* @param exchange
* @return
*/
public boolean comesFromServlet(Exchange exchange){
// What goes here?
}

}

最佳答案

Exchange 上还有一个 API,可以告诉您它是从哪个端点创建的。 http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/Exchange.html#getFromEndpoint ()

exchange.getFromEndpoint().getEndp

另一种方法是,如果您为路线分配 ID,您也可以获得此信息

String fromRoute = exchange.getFromRouteId();

您可以使用 .routeId("myRouteId") 为路由分配 id

from("servlet:///myService").routeId("myRouteId")

关于java - 如何根据 Camel Exchange 的起源地进行不同的处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13405301/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com