使用recipientList的Apache Camel路由

时间:2018-03-27 07:14:34

标签: java routing apache-camel messenger

我尝试使用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()

这是我服务类的一部分:

    exchange.getIn().setHeader("access_token", messengerServiceEndpoint.getEndpointUri()+"?access_token="+accessToken);

实际上我想将access_token动态添加到端点URI。但我只能从服务类中获取令牌。

如果有人有一些很好的见解,谢谢

1 个答案:

答案 0 :(得分:0)

我认为你要找的是 org.apache.camel.impl.JndiRegistry org.apache.camel.impl.SimpleRegistry

您可以将对象绑定到注册表并检索所需的位置。

http://camel.apache.org/registry.html

检查此链接以创建SimpleRegistry并在Java DSL中使用:

http://preparationforinterview.com/preparationforinterview/camel-spring-bean-javadsl

以下是关于创建JNDIRegistry的stackoverflow问题:

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");