Почему бы не создать простого Actor, который бы использовал обратный вызов в качестве аргумента конструктора, а затем просто сидел бы в:
while( running ) {
callback ( subscriber.recv( 0 ).asInstanceOf[Array[Byte]] )
}
Если скорость не является обязательным требованием, вы также можете посмотреть на модуль AKKA ZeroMQ , он следует традиционной передаче сообщений без блокировки. Однако я нашел это намного медленнее, чем ванильный JZMQ.