我正在使用actor通过websocket向客户端发送消息。所以连接时每个客户端都有自己的actor。业务逻辑就是这样
actorSystem.actorSelection(s"/user/connections/UserQueues-${userId}") ! Message(content)
。
对于某些类型的消息,如果客户端未连接,我需要保留消息,并在客户端连接时重新发送消息。将消息路由到将记住未传递消息的actor的最佳方法是什么?如果用户尚未连接且没有路径s" / user / connections / UserQueues - $ {userId}"在层次结构中。
答案 0 :(得分:0)
如果您控制websocket演员,您可以确认收到此消息,如果它没有确认您又一次又重新发送。 Akka已经在akka-persistence的AtLeastOnceDelivery中建立了对此的支持,以及如何使用它AtLeastOnceDelivery example in docs。
长话短说,您需要从使用!
切换到deliver(destination, deliveryId => Msg(deliveryId, s))
,然后找到确认此消息已发送的方法(将确认发送回发件人,然后调用{{ 1}}在里面)。
希望这有帮助!