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

使用bean ref设置camel路线中的标题

吕岳
2023-03-14
 from("direct:myRoute1")
                .bean(new DemoRoute(), "test(Demo,xxx)")
                .end();


 from("direct:myRoute2")
                .bean(new DemoRoute(), "test(Demo,xxx)")
                .end(); 



public interface Shape

@Component
class Circle implements Shape{
}

@Component
class Square implements Shape{}

我想在route test(Demo,xxx)中注入形状实现

  1. sethead er()是否可以帮助在路由中添加Shape实现。
  2. 除了在骆驼路线中设置标头之外,还有其他选择吗?因为它有它的优点和缺点

在骆驼交易中设置大量标头的利弊

共有1个答案

司毅庵
2023-03-14

这是绕过骆驼的解决方案:

由于您自己实例化 bean,而不是依赖 spring 来管理它,因此您可以通过构造函数传递 Shape 实现。

在DemoRoute类中添加一个Shape字段:

public class DemoRoute {

        private  final Shape shape;


        public DemoRoute(Shape shape) {
            this.shape = shape;
        }

        // test method that uses shape
    }

在您的路由配置类中,配置如下:

@Component
public class CustomRoute extends RouteBuilder {

    private final Square square;
    private final Circle circle;

    CustomRoute(Square square, Circle circle){
      this.square = square;
      this.circle = circle;
    }


    @Override
    public void configure() throws Exception {
        from("direct:myRoute1")
                .bean(new DemoRoute(circle), "test(Demo,xxx)")
                .end();


        from("direct:myRoute2")
                .bean(new DemoRoute(square), "test(Demo,xxx)")
                .end();
    }
}
 类似资料:
  • 我正在使用 Camel sql 组件,并希望在事务失败时使用 onConsumeFailed 更新具有异常堆栈跟踪的记录。 表结构: 如果不存在,则创建表 库存( itemnbr 整数 非空默认值 nextval('inventory_itemnbr_seq'::regclass), 位置整数, 位置类型字符变化 (2) , 颜色字符变化 (5) , 品牌字符变化 (5), soh 双精度, ca

  • 截至2015年的Apache Camel 2.16.3,所有。beanRef Java DSL routebuilder方法已被弃用。 不幸的是,即使是在2017年,官方的Camel文件仍然表示要使用不推荐的。beanRef方法。而API说要使用。豆子(…)方法,所有这些方法都会实例化bean的新版本,或者期望传入现有版本。 我的问题是,我如何在Spring框架中使用这些方法在JavaDSL路由中

  • 我有一个带有Camel处理器的骆驼DSL路由,该处理器确定要发送文件的位置。路径保存到Exchange中的标头中,以便将其传递回路由。我想在我的路由中使用此标头值(路径),但我收到以下错误: “不允许使用${}占位符的动态表达式。请使用文件名选项设置动态表达式。” 当我使用fileName选项时,这会创建一个文件作为路径中的最后一个目录,而我希望这是一个目录,但没有像directoryName这样

  • 如何使用HTTP为“from”endpoint定义骆驼路由? 我的目标是定义一个路由,当有HTTP请求时,消息将在ActiveMQ队列上排队。 我尝试了以下路由定义: 从浏览器中,我访问 URL: 我已经验证了HTTP请求已经到达web服务“customerservice ”,因为我收到了来自web服务的XML响应。但是,没有消息在ActiveMQ队列中排队。 下面是处理ActiveMQ队列中消息

  • String postProcessor=“file: from(processFiles).threads(10).routeid(“someid”) .to(“bean:someBean”); 从(postProcessor).routeid(“PostProcress”).到(“bean:PostProcessorBean”); 解决方案已经到位。但目前需要更多的时间。因此,我们尝试在cam

  • 我试图在Wildfly Swarm中设置一个Camel Rest服务,但我不确定类是如何实例化的,甚至不知道是如何实例化的。我下载了Wildfly Swarm示例,并查看了Camel CXF-JAXRS项目,这是有意义的,但它使用XML定义路由。我想使用Java DSL。我的类如下所示: 我已经尝试过使用和不使用文件。Swarm启动,但我无法浏览到rest服务endpoint。 如何调用?我应该有