不同项目中的 NServicebus MessageHandler 不会受到攻击
我的问题: 我有一个实现 NServicebus 的 Web 项目,并且应该监听消息。 为了保持我的解决方案整洁,我为所有消息处理程序设置了一个不同的项目。 我现在发现这些消息处理程序不会受到消息的“影响”。
据我了解,NServicebus 会扫描 Web 项目的调试文件夹中的所有 dll,以查找任何实现 IHandleMessages<> 的类。 我在我的 web 项目中引用了 messagehandlers 类库项目,它出现在我的调试文件夹中,但它似乎没有被命中。
什么有效
- 在控制台示例项目中,包含包含消息处理程序的引用项目可以按预期工作。
- 在我的网络应用程序中,当我移动我的 Web 应用程序项目本身的消息处理程序。
阅读网站http://docs.prefer.net/nservicebus/hosting/nservicebus- host/ 我发现Configure.With()方法有重载。 但是:
- 我不知道我是否需要它们。他们发短信似乎只是表明 这将限制 NServicebus 查找的位置 接口的实现。
- 我正在使用的Configure.WithWeb 方法中不存在这些重载。
我可以通过将所有消息处理程序移至我的 Web 项目来解决我的问题,但这似乎不是最好的解决方案。
我在这里错过了什么吗?
My problem:
I have web project which implements NServicebus and should listen to messages.
Trying to keep my solution tidy I set up a different project for all my messagehandlers.
I now find that these messagehandlers do not get "hit" with messages.
To my understanding NServicebus scans all dll's in the debug folder of the web project to find any classes implementing IHandleMessages<>.
I referenced the messagehandlers class library project in my webproject and it appears in my debug folder, however it does not seem to get hit.
What does work
- In a console sample project the inclusion of a referenced project which contains messagehandlers works as expected.
- In my web app it works when I move my
messaghandlers to the web app project itself.
Reading through the website http://docs.particular.net/nservicebus/hosting/nservicebus-host/ I found that there are overloads for the Configure.With() method.
However:
- I do not know if I need them. They text only seem to suggest that
this will limit the places where NServicebus looks for the
implementations of the interface. - these overloads do not exist in the Configure.WithWeb method which I'm using.
I can solve my problem by moving all the messagehandlers to my web project, but this does not seem like the best solution.
Am I missing something here?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在 Web 项目中使用 NServiceBus 时,请使用
NServiceBus.Configure.WithWeb()
而不是NServiceBus.Configure.With()
。此外,为了在 Web 应用程序中加载消息处理程序,您需要在
.UnicastBus()
后面包含.LoadMessageHandlers()
行,如 在您自己的进程中托管 NServiceBus。否则,不会加载任何IHandleMessages
实现,并且您的 Web 应用程序将作为仅发送端点运行。When using NServiceBus in a web project, use
NServiceBus.Configure.WithWeb()
instead ofNServiceBus.Configure.With()
.Also, in order to load message handlers in a web application, you need to include the
.LoadMessageHandlers()
line after.UnicastBus()
as described in Hosting NServiceBus in your own Process. Otherwise anyIHandleMessages<T>
implementations are not loaded and your web application operates as a send-only endpoint.