Apache Camel 路由与 recipientList
Apache Camel routing with recipientList
我正在尝试使用 org.apache.camel 动态路由消息。
这是我的代码:
from("direct:messenger")
.routeId("messenger-provider")
.bean(messengerService, "process")
.marshal().json(JsonLibrary.Jackson)
.setHeader(Exchange.HTTP_METHOD, constant("POST"))
.recipientList(header("access_token")).ignoreInvalidEndpoints()
这是我的服务 class 相关的部分:
exchange.getIn().setHeader("access_token", messengerServiceEndpoint.getEndpointUri()+"?access_token="+accessToken);
事实上,我想将 access_token 动态添加到端点 URI。但我只能从服务 class.
获取令牌
如果有人有一些见解会很棒,谢谢
我想你要找的是 org.apache.camel.impl.JndiRegistry 或 org.apache.camel.impl.SimpleRegistry:
您可以将对象绑定到注册表并在需要的地方检索。
http://camel.apache.org/registry.html
检查此 link 以创建 SimpleRegistry 并在 Java DSL 中使用:
http://preparationforinterview.com/preparationforinterview/camel-spring-bean-javadsl
下面是关于创建 JNDIRegistry 的 Whosebug 问题:
camel - get jndi registry
如果您使用的是Spring,那么您可以使用ApplicationContextRegistry:
ApplicationContextRegistry registry = exchange.getContext().getRegistry(ApplicationContextRegistry.class);
Map<String,Object>map = (Map<String,Object>)registry.lookup("map");
map.put("objectVar", objectVar);
在您的 Spring 配置中有一个地图来加载对象:
<bean id="map" class="java.util.HashMap"></bean>
检索对象:
Map<String,Object> map = (Map<String,Object>)registry.lookup("map");
Object1 o = (Object1) map.get("objectVar");
我正在尝试使用 org.apache.camel 动态路由消息。
这是我的代码:
from("direct:messenger")
.routeId("messenger-provider")
.bean(messengerService, "process")
.marshal().json(JsonLibrary.Jackson)
.setHeader(Exchange.HTTP_METHOD, constant("POST"))
.recipientList(header("access_token")).ignoreInvalidEndpoints()
这是我的服务 class 相关的部分:
exchange.getIn().setHeader("access_token", messengerServiceEndpoint.getEndpointUri()+"?access_token="+accessToken);
事实上,我想将 access_token 动态添加到端点 URI。但我只能从服务 class.
获取令牌如果有人有一些见解会很棒,谢谢
我想你要找的是 org.apache.camel.impl.JndiRegistry 或 org.apache.camel.impl.SimpleRegistry:
您可以将对象绑定到注册表并在需要的地方检索。
http://camel.apache.org/registry.html
检查此 link 以创建 SimpleRegistry 并在 Java DSL 中使用:
http://preparationforinterview.com/preparationforinterview/camel-spring-bean-javadsl
下面是关于创建 JNDIRegistry 的 Whosebug 问题:
camel - get jndi registry
如果您使用的是Spring,那么您可以使用ApplicationContextRegistry:
ApplicationContextRegistry registry = exchange.getContext().getRegistry(ApplicationContextRegistry.class);
Map<String,Object>map = (Map<String,Object>)registry.lookup("map");
map.put("objectVar", objectVar);
在您的 Spring 配置中有一个地图来加载对象:
<bean id="map" class="java.util.HashMap"></bean>
检索对象:
Map<String,Object> map = (Map<String,Object>)registry.lookup("map");
Object1 o = (Object1) map.get("objectVar");