java - 模拟 Camel Endpoint POJO 生产者的方法

标签 java apache-camel

我遵循了指南here ,并且我成功地在我的 bean 端点上配置了生产者,如下所示:

@Produce( uri = "activemq:foo" )
  private MyListener myListener; 

MyListener 是:

public interface MyListener {

  @InOnly
  public void send( String message );
}

还有我的 bean :

    public class MyBeanEndpoint {

          @Produce( uri = "activemq:foo" )
          private MyListener myListener; 

          @Handler
          public void doSomething( final Object body ) {
            ...
    }

public void setMyListener( final MyListener myListener ) {
    this.myListener = myListener;
  }

现在,我该如何测试呢? 我的意思是:我的测试扩展了 CamelTestSupport 并使用

配置了我的路线
@Override
  public RouteBuilder createRouteBuilder() {
    return new RouteBuilder() { ... }

也就是说:我已经复制了camel上下文,但是我没有配置spring上下文,并且我希望(如果可能的话)避免实例化它。

我如何模拟生产者或让 Camel 实例化并将这个 bean 注入(inject)到我的 bean 端点中? 使用 Apache Camel 功能(例如 CamelTestSupport 和类似实用程序)测试这种情况的最佳方法是什么?

我的引用测试是:

public class Test extends CamelTestSupport {

  private static BeanEndpoint beanEndpoint

  @BeforeClass
  public static void init() { 
    beanEndpoint.setActivemqMyListener( ??? );
  }

  @Override
  public CamelContext createCamelContext() {
    context = new DefaultCamelContext();
    context.addComponent( "activemq", new SedaComponent() );
    return context;
  }

  @Override
  public RouteBuilder createRouteBuilder() {
    return new RouteBuilder() {

      @Override
      public void configure() throws Exception {

        from( "activemq:foo" )
                .to( "mock:out" );

      }
    };
  }

  @Test
  public void testFooQueue() throws Exception {}

最佳答案

让 Camel 创建您的 bean,然后为您配置各种依赖项注入(inject)等。

private static BeanEndpoint beanEndpoint

 ...

beanEndpoint = camelContext.getInjector().newInstance(BeanEndpoint.class);

关于java - 模拟 Camel Endpoint POJO 生产者的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34198090/

相关文章:

JavaFX WebEngine 生成 StringIndexOutOfBoundsException,出了什么问题?

java - 替换java中序列的所有实例

java - Apache Camel 同步多个消费者

rest - Camel rest-dsl 发送 400 状态代码

java - 如何使用 apache Camel 根据正文内容进行 GET api 调用

java - 如何使用 Apache HttpClient 获得持久的 HttpConnection?

java - collection.stream().skip().findFirst()的效率

java - HTTP 获取,无需等待响应

java - Camel .beanRef 已弃用 - 现在如何在 Java DSL 路由中访问容器管理的 bean?

java - 使用camel蓝图连接到activeMQ