【问题标题】:Akka/Camel UntypedConsumerActor not consuming from file-based queueAkka/Camel UntypedConsumerActor 不从基于文件的队列中消费
【发布时间】:2013-07-01 23:10:12
【问题描述】:

我正在尝试使用以下 lib 版本从“scratch”(读作“noob”)组装我的第一个 Akka/Camel 应用程序:

  • akka-camel: 2.2.0-RC1

根据我能找到的所有文档(Akka 文档、用户组等),从基于文件的队列中消费我所要做的就是这样设置我的系统:

主类:

actorSystem = ActorSystem.create("my-system");

Props props = new Props(Supervisor.class);
ActorRef supervisor = actorSystem.actorOf(props, "supervisor");

Camel camel = CamelExtension.get(actorSystem);
CamelContext camelContext = camel.context();
camelContext.start();

主管类:

import akka.actor.ActorRef;
import akka.actor.Props;
import akka.camel.javaapi.UntypedConsumerActor;
import org.apache.camel.Message;

/**
 * Manages creation and supervision of UploadBatchWorkers.
 */
public class Supervisor extends UntypedConsumerActor {    
    @Override
    public String getEndpointUri() {
        return "file:///Users/myhome/queue";
    }

    @Override
    public void preStart() {
        String test = "test";
    }

    @Override
    public void onReceive(Object message) {
        if (message instanceof CamelMessage) {
            // do something
        }
    }

我的问题是,即使我知道在 preStart() 方法的“测试”行上调试期间正在创建主管对象并中断(更不用说,如果我明确地“告诉”它处理得很好),它不会从定义的端点消费,即使我有另一个应用程序向同一个端点生成消息。

知道我做错了什么吗?

【问题讨论】:

    标签: apache-camel akka


    【解决方案1】:

    好的,问题是我自己的错,如果您查看 UntypedConsumerActor 继承自的 Consumer 特征,则在示例代码中可以清楚地看到问题。

    这个方法:

    @Override
    public void preStart() {
        String test = "test";
    }
    

    覆盖其父级的 preStart() 方法,对吗?好吧,那个父方法实际上是用动态创建的端点注册消费者的方法,所以虽然你可以覆盖它,但你必须调用 super() 否则它将不起作用。

    希望这对未来的人有用!

    【讨论】:

      【解决方案2】:

      尝试将onReceive 内部的instanceof 更改为:

      if (message instanceof CamelMessage){
        //do processing here
      }
      

      其中CamelMessage 来自包akka.camel。这就是 akka camel 文档中的示例正在做的事情。

      【讨论】:

      • 谢谢,试过了,但这与是否调用该方法无关。使消费者开始消费队列的任何开关都没有发生。
      猜你喜欢
      • 2013-04-28
      • 1970-01-01
      • 2015-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-15
      • 2015-12-13
      • 1970-01-01
      相关资源
      最近更新 更多