当前位置: 首页 > 知识库问答 >
问题:

骆驼蓝图:标头中的枚举值

太叔天宇
2023-03-14
    <route id="doOperationARoute">
        <from uri="timer://MNG?delay=5s&amp;repeatCount=1" />
        <setHeader headerName="operationName">
            <simple>${type:my.pkg.EnumOperations.OP_A}</simple>
        </setHeader>
        <log message="${headers}" />
        <to uri="bean:myProcessor" />
    </route>
 package my.pkg;
 public enum EnumOperations{
    OP_A
 }
public class MyProcessor implements Processor{
    @Override
    public void process(Exchange exc) throws Exception {

        //HERE I RECEIVE THE CAST ERROR (String cannot be casted to EnumOperation)
        EnumOperations operation=(EnumOperations)exc.getIn().getHeader("operationName");

        switch (operation) {
        case OP_A: 
            break;
        default:
            break;  
        }   
    }
}

共有1个答案

籍弘伟
2023-03-14

您可以通过两种方式来实现这一点:

1)在proccessor中获取具有类类型的headr

EnumOperations operation = exc.getIn().getHeader("operationName", EnumOperations.class);

2)如果Camel Proccessor使用bean,则使用@header传递枚举

class Bean {

   public void methodName (@Header("operationName") EnumOperations operation){
     switch (operation) {
        case OP_A: 
            break;
        default:
            break;  
        }   
   }
 类似资料:
  • 我试图得到一个代理工作与蓝图在OSGi(正在通过Karaf)正确,并通过Gradle构建。 我的蓝图文件(名字已经改变,以保护无辜): 我对此感到非常困惑,因为它在抱怨Camel上下文中的标记。我在其他地方使用了完全相同的语法(只是一个不同的包),没有问题。 最后一个“错误”是: RuntimeException:放弃等待服务(ObjectClass=org.apache.camel.CamelC

  • 我是第一次使用Camel。我的试验项目是编写一个应用程序,该应用程序接收HTTP GET请求(使用Jetty)并通过Thrift将请求传递到另一台服务器。然后将收到的答案传递回客户端。(即,如果您愿意,我正在编写超文本传输协议-get请求和Thrift支持的服务器之间的数据交换机或中间件应用程序。) 我有一个完美的非驼峰版本,现在我正在尝试将驼峰等效物组合在一起。目前,我只想将jetty请求写入一

  • 我知道有一些方法可以捆绑应用程序并将其部署在Tomcat或Jetty中。但是,如果我这样做了,最大的问题就变成了如何与Restlet集成。 我做了进一步的挖掘。我举了骆驼附带的一个tomcat例子。然后我试着让它具有RESTLET功能。差不多管用了。现在的问题是参数没有传递到路由。我希望当调用这个服务器:http://x.x.x.x.x:8080/rs/user/?name=Paul时,我会得到:

  • 这似乎应该很简单,原谅我的双关语。我正在尝试在一个spring DSL路由中记录一个camel报头。我已经看到了Java DSL的答案,但我一直在徒劳地寻找如何让它在spring DSL中工作。我试过了: 以及: 以及其他一些排列/变体,但所有这些都只是逐字记录该文本(即,它们不替换实际的标题名称)。 我错过了什么? 更新:这是我的xml文件的大部分:

  • 我使用骆驼与hazelcast组件和面临的问题与交换头,当交换通过hazelcast seda。 我需要轮询目录中的文件,并将交换发送到seda hazelcast队列(以处理集群中的交换)。 这种情况有一个简单的例子。有两个路由,在其他JVM中运行: 首先是轮询文件: 第二个问题是: 当我试图阅读像或其他,我意识到它们是空的。 通过hazelcast seda组件传输交换时,是否可以保存标头?

  • 我想在Camel环境中使用Jetty组件。这是我的spring配置的摘录。xml: 下面是用于返回字符串的代码: 本地地址有效(http://127.0.0.1/enc)但是浏览器没有正确显示字符串(显示为“abcÃö¼ÃŸ”–äääääŒääää‰)。我假设问题是一些编码。如何设置像“utf-8”这样的编码? 我在这里找不到任何提示(http://camel.apache.org/jetty.