我是Service Fabric Reliable Actors技术的新手,正在尝试为这种特定情况找出最佳实践:
假设我们有一些旧代码,我们想运行基于SF Reliable Actor的新代码。某些类型“ ActorExecutor”的Actor将异步调用某些第三方服务,该服务有时可能会停留很长时间,比Acter的调用客户端准备等待的时间更长,甚至会遇到长期的底层通信问题。我们不希望客户端(传统代码)被ActorExecutor中的任何问题所阻塞,它不希望从actor那里获得任何价值或地位。我们应该为此使用SF ReliableQueue吗?我们是否应该使用某种actor-broker来接收来自客户端的请求并将其存储在队列中:Client-> ActorBroker-> ActorExecutor?提醒在这里有用吗?
在这方面还有一个问题:当成千上万的演员可能同时卡在“第三方不完整通话”中,而我们想重新激活并重复对他们的最后一次通话时,给出这种情况是可能的我们为此编写了一个新工具?在NServiceBus中,您可以在MSMQ中创建一个错误队列,在该队列中所有失败都将失败,例如“无法处理”消息被降落,然后我们可以在将来的任何时间简单地对其进行重新处理。据我了解,Service Fabric中没有这种东西,这是我们需要自己构建的东西。
答案 0 :(得分:1)
event driven方法可以为您提供帮助。您不必等待Actor从调用返回服务,而可以在其上排队一些任务,以请求其执行某些操作。调用Actor的服务将自动运行,处理其任务队列中的项目。这将允许它执行重试和错误处理。呼叫成功后,新事件可以通知系统的其余部分。
也许this项目可以帮助您入门。
编辑: