【问题标题】:EasyNetQ with asp.net web api as subscriber使用 asp.net web api 作为订阅者的 EasyNetQ
【发布时间】:2014-10-23 07:37:10
【问题描述】:

我必须实现一个 asp.net web api,它充当 rabbitMQ 的订阅者。 Windows 服务将向 Web api 服务发布消息。在生产环境中运行的 web api 实例将不止一个。我不确定如何在 web api 上打开订阅者通道并保持打开状态,直到 IIS 重新启动。将有一个发布者和几个消费者。

有人可以指导一些示例代码吗?

任何帮助将不胜感激

【问题讨论】:

    标签: asp.net-web-api rabbitmq easynetq


    【解决方案1】:

    通常,RabbitMQ 订阅不适用于 IIS 托管应用程序,因为您无法控制应用程序何时运行。 IIS 将根据需要回收、停止和启动应用程序。

    如果必须这样做,请打开到 RabbitMQ 的连接并在应用程序启动时开始订阅,例如在 Global.asax.cs 中,并确保在关闭时正确处理所有内容。

    您最好为订阅构建一个 Windows 服务,或者写入 IIS 托管的 Web 服务可以访问的共享存储,或者在 Windows 服务中自托管 API。

    【讨论】:

    • 优秀的回复。正题。非常感谢您的回复。我需要在 IIS 上的 web api 中打开订阅,因为它充当应用程序其余部分的推送服务。当您说在 application_end 处理对象期间是指subscriberbus.Dispose?
    • 当发布者使用相同的对象类型发布时,具有相同对象类型的 ll 订阅者,即 bus.subscribe("localhost") 是否也会收到消息?
    • 是的,EasyNetQ 按消息类型路由,因此某个类型的订阅者将获得该类型的所有已发布消息。
    • 和subscriber.dispose() 会在应用程序结束时发挥作用吗?还是我需要做其他事情?
    • 你需要 bus.Dispose();当您的应用程序退出时。这也会关闭所有消费者(订阅者)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多