我正在编写一个c#windows服务,它将执行一些后台处理 - 基本上它是一个工作队列的消费者。
它不需要停机(停止处理新项目),如果它确实失效,我需要得到通知。
有哪些设计准则和注意事项:a)确保此类服务尽可能可靠,以及b)如果出现问题,发出通知?例如,我考虑过创建一个观察者线程,其唯一的工作就是确保工作线程仍在处理作业。
答案 0 :(得分:1)
您可以在此处执行许多操作来帮助提高可靠性,并确定您的解决方案可以满足您的需求。
<强>测试强>
首先,您要经历的测试过程需要非常扎实,测试那些“意外”情况,丢失网络连接等。确保您正在测试这些,并看看是什么正在发生。关于失败的通知,可能是一个“混合包”。例如,如果您没有可用的网络连接,则无法通过电子邮件发送自己。
正确的代码设计
除了设置有效的测试方案之外,请确保您的代码尽可能是防弹,因为您正在创建Windows服务,请确保捕获,记录和处理所有可能的错误,就好像如果操作系统出现错误,您的服务将会停止运行。
<强>监控强>
考虑进行监控,在我的日常工作中,我们使用了两种类型的监控,在某些情况下会报告Windows事件日志,并且Microsoft MOM用于通知我们正在进行的任何/所有问题。环境。我们使用的第二个进程是第二个预定作业,每隔X分钟验证一个关键作业是否处于“已启动”状态,如果它未处于启动状态,它将重新启动它。不优雅,但它有效。
答案 1 :(得分:0)
我认为您的系统管理员可能正在使用MOM和/或Solar Winds或其他一些监控应用程序来监控部署该服务的计算机。采取适当行动(发送电子邮件,拨打电话:)