如果参与者不是在akka中创建的,如何将消息传递给另一个参与者

如果参与者不是在akka中创建的,如何将消息传递给另一个参与者,akka,Akka,我正在使用actor通过websocket向客户端发送消息。因此,每个连接的客户机都有自己的参与者。业务逻辑就是这样 actorSystem.actorSelection(s)/user/connections/UserQueues-${userId}“!信息(内容)。 对于某些类型的消息,如果客户端未连接,我需要保留消息,并在客户端连接时重新传递消息。将消息路由到将记住未传递消息的参与者的最佳方法是什么?如果用户尚未连接,并且层次结构中没有路径为s“/user/connections/User

我正在使用actor通过websocket向客户端发送消息。因此,每个连接的客户机都有自己的参与者。业务逻辑就是这样
actorSystem.actorSelection(s)/user/connections/UserQueues-${userId}“!信息(内容)

对于某些类型的消息,如果客户端未连接,我需要保留消息,并在客户端连接时重新传递消息。将消息路由到将记住未传递消息的参与者的最佳方法是什么?如果用户尚未连接,并且层次结构中没有路径为s“/user/connections/UserQueues-${userId}”的参与者,则会发生这种情况。

如果控制websocket参与者,则可以使其确认收到此消息,如果未确认,则会反复重新发送。Akka在Akka persistence中构建了对此的支持,下面介绍如何使用它

长话短说,您需要从使用
切换
发送到
delivery(destination,deliveryId=>Msg(deliveryId,s))
,然后找到确认此邮件已发送的方法(将确认发送回发件人,然后在邮件内部调用
confirmDelivery


希望这有帮助

谢谢你的回复!我认为在我的情况下,重新交付将不起作用。在客户端登录之前,未送达的邮件可以存储数天。使重发超时过大不是一个选项,因为我需要在客户端登录后立即显示消息。使其太小会给服务器带来不必要的负担。实际上,我需要一种很好的方法来截获绑定到死信队列的消息,因为表示我的用户的actor尚未实例化。存储/检索未送达的邮件是一项简单的任务。