【问题标题】:RabbitMQ, and web servicesRabbitMQ 和 Web 服务
【发布时间】:2013-11-18 21:21:32
【问题描述】:

我的任务是获取 RabbitMQ 队列,处理消息(键和值)以过滤掉不需要的项目(基于键),并在通过 Web 服务使它们可用之前延迟结果。

作为 RabbitMQ 的新手,似乎我最好的方法是编写一个 Windows 客户端,该客户端从队列中检索消息,相应地对其进行过滤并将其放入自定义类集合 (System.Collection.Queue)。每当此集合中的项目存储 X 秒时,消息数据将被推送到公共集合中以覆盖基于键的现有值。

这个可公开访问的集合将作为返回 json 数据的 REST 服务公开。

只要客户端在运行,它就会无限循环。

最终客户端是一个 javascript 小部件,它将连接到此 Web 服务,并且可能每秒轮询一次。看来我的方法会奏效,但我担心这个过程会过于密集?我觉得可能有更好的解决方案。

我最初认为 node.js 可能非常适合这个项目,但我主要是 asp.net 开发人员,所以我很乐意考虑其他解决方案,比如 SignalR、Web API、WCF?

【问题讨论】:

    标签: c# wcf web-services node.js rabbitmq


    【解决方案1】:

    看来您担心的是轮询,而不是 RabbitMQ。如果您可以指定支持它的技术,则推送解决方案更合适。由于 SignalR 和其他 websocket 解决方案允许推送通知,因此非常适合。

    我个人认为您不需要 Windows 应用程序 - 您可以轻松地在 ASP 中执行工作任务。 .NET 并行库现在也很好地支持使用阻塞集合的生产者/消费者模式。

    所以你可以这样做 - 收到消息 - 添加到阻塞队列

    -阻塞队列消费者获取消息并

    -为消息启动新任务

    -睡眠任务所需的时间

    -添加到 Web API 输出队列

    -通过 websocket 推送新消息

    【讨论】:

      猜你喜欢
      • 2017-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-12
      • 1970-01-01
      • 2019-01-31
      • 1970-01-01
      • 2016-12-20
      相关资源
      最近更新 更多