Hi,
On Friday, February 14, 2014 9:12:38 AM UTC, ravi kiran wrote:
>
> I was trying to implement this.
> http://www.playframework.com/documentation/2.2.x/JavaAkka
> Marked in orange is the line where i was trying to return the Future
> message to my controller from the actor.
> But the problem is am not receiving the message and i am getting timeout
> in the controller.
>
> *This is my stack trace.*
>
> [INFO] [02/14/2014 12:33:29.848]
> [application-akka.actor.default-dispatcher-7]
> [akka://application/deadLetters] Message
> [jaxb.ota.OTAHotelBookingRuleNotifRQ] from
> Actor[akka://application/deadLetters] to
> Actor[akka://application/deadLetters] was not delivered. [1] dead letters
> encountered. This logging can be turned off or adjusted with configuration
> settings 'akka.log-dead-letters' and
> 'akka.log-dead-letters-during-shutdown'.
> [error] play - Cannot invoke the action, eventually got an error:
> akka.pattern.AskTimeoutException: Timed out
> [error] application -
>
> Can some one please help me on this?
>
> *I have this peace of code in my controller.*
> private static ActorSelection serviceContollerActor =
> Akka.system().actorSelection(
> "akka://application/user/" +
> ActorName.SERVICE_CONTROLLER_ACTOR.toString());
> public static Result valueAdd() {
>
> Document dom = request().body().asXml();
>
> if (dom == null) {
> return badRequest("Expecting Xml data");
> } else {
>
> Timeout timeout = new Timeout(FiniteDuration.create(20, SECONDS));
> return async(Promise.wrap(
> ask(serviceContollerActor,
> new ControllerMessage(JagatServiceAction.VALUE_ADD_SERVICE,
> Optional.fromNullable(dom), Util
> .getUUID()), timeout)).map(new Function<Object,
> Result>() {
> @Override
> public Result apply(Object response) throws Throwable {
> return ok(response.toString());
> }
> }));
> }
> }
>
> *And onReceive of my actor looks something like*
>
> public void onReceive(Object message) throws Exception {
> final ExecutionContext ec = context().system().dispatcher();
> if (message instanceof ControllerMessage) {
> final ControllerMessage controllerMessage = (ControllerMessage)
> message;
> Logger.debug("Service Controller message :" +
> controllerMessage.getAction() + " Sender :" + getSender());
> switch (controllerMessage.getAction()) {
> case VALUE_ADD_SERVICE:
> final Future<OTAHotelBookingRuleNotifRQ> f = future(new
> Callable<OTAHotelBookingRuleNotifRQ>() {
> @Override
> public OTAHotelBookingRuleNotifRQ call() throws Exception {
> Logger.debug("Inside---------");
> final Document dom = (Document)
> controllerMessage.getData().get();
> OTAHotelBookingRuleNotifRQ request = new
> OTAHotelBookingRuleNotifRQ();
> request =
> RequestUnmarshallingUtil.unmarshalOTAHotelBookingRuleNotifRQ(dom, request);
> return request;
> }
> }, ec);
>
> f.onSuccess(new OnSuccess<OTAHotelBookingRuleNotifRQ>() {
> @Override
> public void onSuccess(OTAHotelBookingRuleNotifRQ response)
> throws Throwable {
> if (response != null) {
> Logger.debug("Inside on success -" + response.toString());
> //akka.pattern.Patterns.pipe(f,
> ec).to(getContext().sender());
> /*getContext().sender().tell(
> new
> ControllerMessage(JagatServiceAction.SERVICE_CONTROLLER,
> Optional.fromNullable(response),
> JagatServiceUtil.getUUID()),
> getContext().sender());*/
>
You are closing over getSender here. Save the value somewhere outside the
callback.
> * getSender().tell(response,getContext().sender());*
> }
> }
>
> }, ec);
>
> f.onFailure(new OnFailure() {
> @Override
> public void onFailure(Throwable throwable) throws Throwable {
> Logger.error("Google Posting failed. Sendind this request to
> Queue..", throwable);
> controllerMessage.setError((Exception)throwable);
> }
> }, ec);
>
> default:
> unhandled(message);
> break;
> }
> }
>
> }
>
>
--
>>>>>>>>>> Read the docs: http://akka.io/docs/
>>>>>>>>>> Check the FAQ: http://akka.io/faq/
>>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user
---
You received this message because you are subscribed to the Google Groups "Akka
User List" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/groups/opt_out.