为在多个应用程序服务示例上运行的c#.net bot创建中心数据存储和活动计时器

yyyllmsg  于 2021-06-07  发布在  Redis
关注(0)|答案(0)|浏览(217)

我有一个c#.net机器人与人类移交能力的要求。这里的过程是用户请求人工协助bot将其连接到第三方系统api,并作为代理将消息从客户端传输到代理,反之亦然。为了有效地传输消息,bot维护了一个内存中的converasionreference并发字典,并使用主动消息类比continueconversationasyc传输消息。
目前bot只在一个azure应用服务示例上运行,所以读取内存中的信息没有什么困难,但我想在多示例解决方案中传播它(支持横向扩展)。在这种情况下,内存中的信息不会与其他示例共享。我看到的一个可能的解决方案是将内存中的信息持久化到中央azureredis存储或cosmosdb。我正在努力权衡哪种选择更适合这种情况。它将如何工作时,一个新的示例将被创建基于自动缩放规则,应用程序应该如何处理信息。以及应用程序服务默认负载平衡器如何将请求路由到特定示例,类似于何时终止示例。
此外,我有一个要求,运行一个计时器,为每个活动的聊天会话与人类,如果用户没有回应人类在3分钟内,机器人显示一个提醒消息给用户保持与代理参与。一旦用户或代理键入任何内容,计时器就会进一步滑动。如果用户/代理没有响应,则在2分钟的非活动提醒后,聊天将自动终止以释放代理。
我已经在单个应用程序服务示例上实现了这个逻辑,使用一个在应用程序启动时启动的任务,它周期性地运行在并发字典的所有会话引用中检查最后的活动时间戳并发送提醒消息或终止(如果适用),它还清除字典中的会话引用,因此,有效地当没有聊天运行字典是空的。
我必须使这个解决方案可扩展到多个示例。关于如何实现这一点的任何想法。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题