我是RabbitMQ,EasyNetQ,TopShelf的新组合。目前,我没有使用任何DI。
我正在尝试使用EasyNetQ订阅队列。订阅适用于此控制台应用程序代码
…
这里:
using (var bus = EasyNetQ.RabbitHutch.CreateBus("host=localhost")) { bus.Subscribe<Entity>("entity", Handler); }
订阅后,代码立即处理与EasyNetQ的连接 - 这将断开连接并再次终止订阅。每个 EasyNetQ文档 :
标准做法是在应用程序的生命周期内创建单个IBus实例。在应用程序关闭时处理它。
在这种情况下,您可能希望将EasyNetQ总线的生命周期与通过TopShelf启动或停止的服务联系起来。所以:
private IBus bus; public void Start() { bus = EasyNetQ.RabbitHutch.CreateBus("host=localhost")); bus.Subscribe<Entity>("entity", Handler); } public void Stop() { bus?.Dispose(); bus = null; }