首页 文章

如何处理Azure辅助角色中的非瞬态异常

提问于
浏览
3

我们有两个天蓝色的 Worker 角色--A和B.

  • A是Quartz调度程序,每分钟运行一次作业 .

  • 它每分钟从'Redis cache'读取一些ID,并为这些ID执行作业 .

  • 'A'将其输出发布到由Worker角色'B'订阅的服务总线队列 .

  • 'B' worker角色从队列中读取值并对它们执行更多操作 .

  • 两个辅助角色都必须在启动时构建缓存 .

现在,有关Azure组件故障的几个问题:

  • 如果Redis缓存出现故障,我们该如何处理 . 我们需要停止执行直到它再次启动,然后我们需要再次构建缓存 . 'B'工作者角色应该停止从服务总线拉出消息,直到Redis再次出现 .

  • 如何处理 Worker 角色'B'中的服务总线故障?

2 回答

  • 0

    您无需停止任何工作者角色 .

    Worker role A should be resilient to issues in Redis cache ,意味着您的代码应该通过重试或吞下异常来处理Redis(或网络异常)抛出的任何异常 .

    Worker role B should constantly pull messages from the service bus . 如果辅助角色A不发布数据,则辅助角色B应处理空结果 .

    Stopping your service on Redis/Azure glitch will require you to handle more complicated scenarios - 例如:自动检测Redis是否再次启动并自动启动您的服务 .

  • 0

    一种可能的解决方案是在从服务总线或缓存中提取之前配置工作人员检查的外部 Health 服务 . 如果 Health 服务表示缓存或服务总线已关闭,则您的工作人员根本不会尝试处理任何事情 .

相关问题