Akka Typed and MDC

159 views
Skip to first unread message

Qux

unread,
Jul 7, 2017, 3:15:01 PM7/7/17
to Akka User List
Hi,

Whats the best way to get a DiagnosticActorLogging for Typed Actors?

For untyped Actors we have this:

public abstract class ActorBase extends AbstractActor {
   
protected final DiagnosticLoggingAdapter logger = Logging.getLogger(this);


   
@Override
    public void aroundReceive(PartialFunction<Object, BoxedUnit> receive, Object msg) {
       
try {
           
ActorLoggingHelper.setMdc(msg, logger);
           
super.aroundReceive(receive, msg);
       
} finally {
           
ActorLoggingHelper.clearMdc(logger);
       
}
   
}
}

Would be great if something similar is possible for the new Typed Actors as well.

Samuel

Konrad 'ktoso' Malawski

unread,
Jul 10, 2017, 9:27:51 AM7/10/17
to Akka User List
Akka Typed is still not quite "done" so missing or undecided upon APIs may still be here and there.
That's one of them, so I opened a ticket to discuss and decide what to do about it in Typed.


Having that said, you can always just directly use the logging library that you're using (and in fact this may be what we'll end up recommending with Typed... we'll see).

-- Konrad

Konrad 'ktoso' Malawski

unread,
Jul 10, 2017, 9:29:27 AM7/10/17
to Akka User List
Once I wrote the response I though that for using the library directly you'll also want to know about the possibility to implement:


/**
* Extension point for implementing custom behaviors in addition to the existing
* set of behaviors available through the DSLs in [[akka.typed.scaladsl.Actor]] and [[akka.typed.javadsl.Actor]]
*/
abstract class ExtensibleBehavior[T] extends Behavior[T] {
/**
* Process an incoming [[Signal]] and return the next behavior. This means
* that all lifecycle hooks, ReceiveTimeout, Terminated and Failed messages
* can initiate a behavior change.
*
* The returned behavior can in addition to normal behaviors be one of the
* canned special objects:
*
* * returning `stopped` will terminate this Behavior
* * returning `same` designates to reuse the current Behavior
* * returning `unhandled` keeps the same Behavior and signals that the message was not yet handled
*
* Code calling this method should use [[Behavior$]] `canonicalize` to replace
* the special objects with real Behaviors.
*/
@throws(classOf[Exception])
def receiveSignal(ctx: ActorContext[T], msg: Signal): Behavior[T]

/**
* Process an incoming message and return the next behavior.
*
* The returned behavior can in addition to normal behaviors be one of the
* canned special objects:
*
* * returning `stopped` will terminate this Behavior
* * returning `same` designates to reuse the current Behavior
* * returning `unhandled` keeps the same Behavior and signals that the message was not yet handled
*
* Code calling this method should use [[Behavior$]] `canonicalize` to replace
* the special objects with real Behaviors.
*/
@throws(classOf[Exception])
def receiveMessage(ctx: ActorContext[T], msg: T): Behavior[T]

}

In which way you should be able to "wrap" any other behaviour and to the MDC clear in the right place hm...

Anyway, like I said, not a solved problem yet.

-- Konrad

Justin du coeur

unread,
Jul 10, 2017, 11:02:11 AM7/10/17
to akka...@googlegroups.com
Oh, sweet -- ExtensibleBehavior looks enormously useful...

--
>>>>>>>>>> Read the docs: http://akka.io/docs/
>>>>>>>>>> Check the FAQ: http://doc.akka.io/docs/akka/current/additional/faq.html
>>>>>>>>>> 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 akka-user+unsubscribe@googlegroups.com.
To post to this group, send email to akka...@googlegroups.com.
Visit this group at https://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.

Konrad “ktoso” Malawski

unread,
Jul 10, 2017, 11:04:53 AM7/10/17
to akka...@googlegroups.com, Justin du coeur
The "power mode” ;-)
You received this message because you are subscribed to a topic in the Google Groups "Akka User List" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/akka-user/TmzMVgZjdnU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to akka-user+...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages