Asp.net web api 使用asp.net web api作为订阅服务器的EasyNetQ

Asp.net web api 使用asp.net web api作为订阅服务器的EasyNetQ,asp.net-web-api,rabbitmq,easynetq,Asp.net Web Api,Rabbitmq,Easynetq,我必须实现一个asp.net web api,它充当rabbitMQ的订户。windows服务将向web api服务发布消息。将有多个web api实例在生产环境中运行。我不知道如何在web api上打开订户通道,并在IIS重新启动之前保持其打开状态。将有一个出版商和几个消费者 任何人都可以从一些示例代码开始指导吗 非常感谢您提供的任何帮助通常,RabbitMQ订阅无法与IIS托管的应用程序配合使用,因为您无法控制应用程序的运行时间。IIS将根据需要回收、停止和启动应用程序 如果必须这样做,请打

我必须实现一个asp.net web api,它充当rabbitMQ的订户。windows服务将向web api服务发布消息。将有多个web api实例在生产环境中运行。我不知道如何在web api上打开订户通道,并在IIS重新启动之前保持其打开状态。将有一个出版商和几个消费者

任何人都可以从一些示例代码开始指导吗


非常感谢您提供的任何帮助

通常,RabbitMQ订阅无法与IIS托管的应用程序配合使用,因为您无法控制应用程序的运行时间。IIS将根据需要回收、停止和启动应用程序

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


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

回答得很好。切中要害。非常感谢你的回复。我需要在IIS上的web api中打开订阅,因为它充当应用程序其余部分的推送服务。当您说在应用程序中结束对象的处置时,您指的是subscriberbus.dispose?同时,具有相同对象类型(即bus.subscribe(“localhost”)的所有订阅者在publisher以相同对象类型发布时是否会收到消息?是的,EasyNetQ按消息类型路由,因此,某一类型的订阅者将获得该类型的所有已发布消息。而订阅者。dispose()在应用程序结束时发挥了所有作用?或者我还需要做些什么?你需要公共汽车。处理();当应用程序退出时。这也将关闭所有消费者(订户)。