我在工作环境中遇到了一种情况。我在哪里有wcf服务,该服务从客户端接收消息并存储在db中。现在我的问题是假设服务器宕机了10分钟,这10分钟的消息应该存储在客户端的某个位置,客户端应该每1分钟检查一次服务器的可用性,是否有我可以遵循的任何程序或任何帮助,我们将不胜感激。谢谢
binding :netTCPBinding
MSMQ完全按照您的第一句话说的做-当您发送MSMQ消息时,如果它无法获取远程队列,则它将停留在客户端,并且内置MSMQ服务在后台重试。这样,您的消息一经发送便是“安全的”。如果可能的话,它将到达目的地。(如果您的消息量很大并且需要长时间存储消息,那么存储容量可能是个问题,但这是非常非常不可能的。)
我只会在必要时这样做。它涉及修改服务和客户端,并且文档不太友好。
这是MsmqBinding的文档。配置WCF服务的步骤3和4为空白。那没有帮助!当我选择.NET 4.0文档时,将填写这些详细信息。
我看了几本教程,如果要看这本教程,我将从本教程开始。我发现很多教程都弄混了概念,因为它们同时解释了太多的事情,并包括了有关作者项目其他部分的不必要信息。
如果您不对服务进行大量修改以支持MsmqBinding。您可以只在本地实现排队。如果WCF服务关闭,则客户端会将消息放入本地MSMQ队列中,然后不时地从该队列中读取消息,然后尝试再次发送给WCF服务。(如果WCF服务仍然关闭,则将消息放回队列中。)
我只是将消息直接发送到队列,让另一个进程出队并发送到WCF。这样,客户自己就可以“解雇”,如果可以的话。
这样,您不必处理修改服务的麻烦,但是您仍然可以从中受益。如果您的消息无法发送到WCF服务,那么它将进入“安全”位置,甚至可以在客户端应用程序终止或计算机重新启动后幸存下来。
在本地队列中发送和接收消息更容易配置。您的客户端可以检查队列是否存在,并在需要时创建它们。这更容易使用,并且代码示例更加完整和按需。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句