2012-08-30 3 views
8

기존 Akaya를 기존 Java SE 응용 프로그램으로 마이그레이션하여 배우기 시작했습니다. 나는 Akka 2.0.3을 사용하고있다.Java에서 액터에 PoisonPill 보내기

한 지점에서 나는 메시지 큐를 통해 PoisonPill을 전송하여 액터를 중지해야합니다. 내 배우 따라서 인스턴스화 :

ActorRef myActor = actorSystem.actorOf(new Props(MyActor.class), "myActor"); 

은 내가 PoisonPill 보내려고하기 :

myActor.tell(PoisonPill.getInstance()); 

을하지만 다음과 같은 컴파일러 오류 얻을 :

'tell(java.lang.Object)' in 'akka.actor.ActorRef' cannot be applied to '(akka.actor.PoisonPill$)' 

내가 잘못하고있는 중이 야 무엇을? Idea에서 Java 1.6.0_26을 실행하고 있습니다. Eclipse에서 평생 학습했습니다.


편집 :

나는 또한 문서에이 방법을 시도했지만 나도 같은 컴파일러 오류 및 아이디어는 배우 클래스는 사용되지 않습니다 나에게 경고합니다.

import static akka.actor.Actors.*; 
extractionActor.tell(poisonPill()); 
+7

: 참조 참조

target.tell(PoisonPill.getInstance(), ActorRef.noSender()); 

질문 제목에 +1하십시오. 그게 뭔지 전혀 모르겠지만 스릴러 또는 공포 영화의 장면처럼 조금 읽습니다 :-) – Ridcully

+0

그건 사실입니다. 나는 그런 식으로 읽지 않을 것입니다! 저를 믿으십시오, 나는 실제 생활에 실제로 아주 좋은 사람입니다. – Rich

답변

6

Akka 설명서를 읽어 보시기 바랍니다, 우리는 그것을 만드는 데 많은 시간을 소비했습니다

PoisonPill

You can also send an actor the akka.actor.PoisonPill message, which will stop the actor when the message is processed. PoisonPill is enqueued as ordinary messages and will be handled after messages that were already queued in the mailbox.

Use it like this:

import static akka.actor.Actors.*; 
    myActor.tell(poisonPill()); 

위의 방법은 2.0.2부터 사용되지 않습니다 , 이것은 새로운 API입니다 :

ActorRef ref = system.actorOf(new Props(JavaAPITestActor.class)); 
ref.tell(PoisonPill.getInstance()); 

위의 내용이 내 컴퓨터에서 컴파일되므로 IDEA에서 어떤 문제가있을 수 있습니까? javac로 컴파일 해보고 작동하는지 확인하십시오.

+0

미안하지만, 나는 그 문서를 읽었고 그 질문을하기 전에 시도했지만, 같은 컴파일 오류를 얻을뿐만 아니라, 액터가 더 이상 사용되지 않는다고 들었습니다. 접근. 나는 나의 대답을 업데이트 할 것이다. – Rich

+0

대단히 감사합니다. 사용 중단 된 API와 새 API를 모두 반영하여 답변을 수정했습니다. –

+0

Eclipse로 다시 이동 했으므로 잘 컴파일됩니다! 나는 그것이 Idea의 버그 일 수 있다고 생각하지만, 아마도 IDE에서 뭔가 잘못하고있는 것보다 더 잘 알지 못합니다. – Rich

4

위에서 언급 한 내용에 대한 답장에서 언급했듯이 Idea에서 또는 gradle을 사용하여 컴파일하는 경우에는 작동하지 않습니다. 실제로는 송신자 ActorRef가 필요하기 때문에 컴파일 오류입니다. 나는 이전의 대답은 오래된이며, 이것은 API의 변화라면 내가 확실하지 않다, 그래서 누군가가 비슷한 문제가 발생을 위해 사용되어야한다 알고 http://doc.akka.io/docs/akka/snapshot/java/lambda-actors.html#PoisonPill

관련 문제