我想为冗余和负载平衡目的并行部署Windows服务。
我如何确定当客户端向这两个服务发送请求时,只有其中一个能处理实际的呼叫?
示例:
当客户或其他服务发送消息以开始制造过程时,这两个服务都将收到该请求。我要确保这些服务中只有一个能处理此请求,以使制造过程不会两次开始!
他们需要能够与自己交谈吗? 有可能同步这些服务吗?
哪个是解决此问题的最优雅/最可靠的方法?
答案 0 :(得分:0)
请考虑使用互斥锁,以允许这两种服务仅提取一条消息。
尽管如此,您需要确保它可以按照您想要的方式工作。这可以帮助安排应用程序进程和边界之间的时间,但是如果将其部署到两台不同的计算机或云服务中,则互斥锁将无法正常工作。
为此,您需要弄清楚跨应用程序进行通信的另一种方式,通常使用数据库或MSMQ创建消息队列,您可以根据需要从每个服务中弹出消息。
答案 1 :(得分:0)
例如,最安全的方法也是最佳实践,这将是利用MSMQ从队列中检索(而不是窥视)消息。这为您提供了用例的清晰说明:https://docs.microsoft.com/en-us/previous-versions/windows/desktop/msmq/ms706253(v=vs.85)
〜皮诺