【问题标题】:.net message queueing.net 消息队列
【发布时间】:2011-08-12 06:09:58
【问题描述】:

我有一个将消息发送到 asp.net Web 服务的 winforms 客户端应用程序,我需要能够在客户端上对这些消息进行排队,然后按顺序发送它们,等待来自 Web 服务的响应,然后再发送下一条消息。

我确实看过一些使用 WCF 进行排队的示例,但它们似乎在服务器而不是客户端上有队列。

非常感谢任何关于使用什么技术以及如何实施解决方案的建议。

【问题讨论】:

    标签: c# .net message-queue messaging


    【解决方案1】:

    为什么在发送下一条消息之前等待服务器的响应?没有充分的理由这样做。只需用序列号标记消息并在服务器上按顺序处理它们。

    MSMQ 在客户端和服务器上都有一个队列,并在连接可用时移动消息。

    【讨论】:

    • 消息必须按顺序接收。
    • 为什么需要这样做?序列号将帮助您指定消息的处理顺序。
    • 网络/硬件不可靠,有时由于网卡故障和其他问题导致消息丢失。我需要服务器确认消息到达那里,或者我需要客户端在超时后再次发送它而没有响应。
    • 然后按照我说的使用MSMQ。这将处理丢失的消息。您还可以在客户端配置一个队列以从服务器获取接收到的消息:msdn.microsoft.com/en-us/library/ms978430.aspx
    【解决方案2】:

    还有很好的MSMQ,但它也会在服务器上排队。

    【讨论】:

      【解决方案3】:

      您可以将中间件用于队列(MSMQ 等)。

      另一种方法是在客户端使用线程安全的生产者/消费者队列。您的“主要”代码只是添加到队列中(4.0 中的 ConcurrentQueue 可能在这里工作得很好,尽管即使在 4.0 中,我也倾向于使用我前一段时间编写的实用程序队列);并且您有一个专用的工作线程,可以使消息出列、执行 WCF 工作并处理响应。

      【讨论】:

        【解决方案4】:

        如果您需要可靠的交付,为什么不将 AMQP 与 RabbitMQ 之类的消息代理一起使用?

        【讨论】:

          猜你喜欢
          • 2018-12-20
          • 2012-04-17
          • 2020-07-09
          • 2020-11-27
          • 1970-01-01
          • 2020-04-18
          • 2011-02-20
          • 2013-08-09
          • 2012-10-10
          相关资源
          最近更新 更多