2011-03-17 11 views
16

Hay actores de Akka (API de Java) (UntypeActor) y mensajes en la aplicación. De acuerdo con el contrato de API en caso de que algunos mensajes estén dirigidos al mismo actor, se ponen en cola y se procesan uno a uno.cómo obtener el tamaño de la cola de mensajes de un actor de Akka?

Me gustaría manejar mensajes en el actor dependiendo del tamaño de la cola. Básicamente: ¿hay al menos un mensaje más en cola en el momento en que se maneja el actual en Actor.onReceive()? ¿Cuál es la forma Akka de archivar esto?

+2

Solo recuerda que estás en la situación en la que se puede agregar un mensaje el nanosegundo después de tu llamada a getMailboxSize() –

+0

Let it fail then;). ¡Gracias! –

Respuesta

12

Desde dentro de la UntypedActor haces:

getContext() getMailboxSize();.

+22

Ya no está en akka 2 http://letitcrash.com/post/17707262394/why-no-mailboxsize-in-akka-2 –

+2

Del artículo: _En caso de que no pueda prescindir, es bastante fácil escribir su propio implementación del buzón de correo, construyendo sobre los rasgos en el paquete akka.dispatch e insertando el código de contabilidad en enqueue() y dequeue(). Luego, puede utilizar down-casting (evil) o realizar un seguimiento de sus buzones de correo en akka.actor.Extension (recomendado) para acceder a las estadísticas desde dentro de su actor y hacer lo que sea necesario. – Henrik

Cuestiones relacionadas