【问题标题】:Configuring consumer for custom component in apache camel using Java使用 Java 在 apache camel 中为自定义组件配置使用者
【发布时间】:2015-03-03 18:07:43
【问题描述】:

假设我有一个 Jetty 组件 comp1 和自定义组件 comp2,其中 comp1 产生一个交换,而 comp2 消耗它。 如何在 comp2 的消费者中获取 Jetty 组件的交换。

到目前为止,我观察到我们可以在消费者的 poll() 方法中获得它—— SomeEndpoint 端点 = camelContext.getEndpoint("someURI", SomeEndpoint.class);

但是在 someURI 和 someEndpoint.class 中要配置什么?

如果我提到 someURI = "jetty:..",那么我的消费者将不会消费来自任何其他端点的消息,那么如何将其配置为泛型?

【问题讨论】:

    标签: apache-camel


    【解决方案1】:

    您必须首先使用

    为您的自定义组件创建骨架代码
    mvn archetype:generate -DarchetypeGroupId=org.apache.camel.archetypes -DarchetypeArtifactId=camel-archetype-component  
    -DarchetypeVersion=2.14.1 -DarchetypeRepository=https://repository.apache.org/content/groups/snapshots-group  
    -DgroupId=org.apache.camel.component -DartifactId={YourArtifactId} 
    

    您的组件前缀文件位于此位置

    src/main/resources/META-INF/services/org/apache/camel/component/
    

    此文件的名称是您的组件前缀。您在第一步生成项目时提供此名称。

    假设它的名字是comp2。现在你只需要以这种方式配置你的路由:

    from("jetty:abc").to("comp2:xyz");   
    

    您的组件的 jar 必须作为对配置 Camel Route 的应用程序的依赖项提供。

    如果需要,您需要实现组件类、端点类、消费者和生产者类。

    【讨论】:

    • 是的,但是如果你实现了 Consumer ,那么你需要在那里获得 Exchange 并且我的问题是,如何获得能够给我消息和码头组件标头的交易所。
    • @Mayank 一种方法是在端点类中实现 createConsumer()。在这里你初始化你的处理器类并将流程委托给它;例如:XyzProcessor prces = new XyzProcessor(params)。您的 XyzProcessor 将实现处理方法并提供可用的交换。
    【解决方案2】:

    Spring DSL 允许您执行以下操作: 在消费者和生产者之间,您可以添加自定义生产者

    <route>
      <from uri="component1 uri"/>
       your other process code
      <to uri="component2 uri">
    </route>
    

    【讨论】:

    • 谢谢,但你能告诉我如何使用 Java 来做,因为我需要用 Java dsl 来做。
    猜你喜欢
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多