2011-10-25 2 views
2

문제점 : NServicebus를 구현하는 웹 프로젝트가있어서 메시지를 청취해야합니다. 내 솔루션을 깔끔하게 유지하려고 모든 메시지 처리자를 위해 다른 프로젝트를 설정했습니다. 이제 이러한 메시지 처리기가 메시지로 "공격"하지 않는다는 것을 알게되었습니다.NServicebus 다른 프로젝트의 MessageHandlers에 히트가 발생하지 않습니다.

내 이해 NServicebus는 웹 프로젝트의 디버그 폴더에있는 모든 DLL을 검색하여 IHandleMessages <>을 구현하는 모든 클래스를 찾습니다. 내 webproject에서 messagehandlers 클래스 라이브러리 프로젝트를 참조하고 디버그 폴더에 나타나지만 충돌이없는 것 같습니다. 예상대로 messagehandlers을 포함하는 참조 된 프로젝트의 포함이 작동하는 콘솔 샘플 프로젝트에서 작업을

  1. 을 무엇

    .

  2. 내 웹 앱에서는 messaghandlers를 웹 앱 프로젝트 자체로 이동할 때 작동합니다.

웹 사이트를 통해 읽음 http://docs.particular.net/nservicebus/hosting/nservicebus-host/ Configure.With() 메소드에 과부하가 있음을 발견했습니다. 그러나 :

  • 내가 필요한지 모르겠습니다. 이 텍스트는 은 NServiceBus가 인터페이스 구현을 으로 찾는 곳을 제한 할 것이라고 제안하는 것 같습니다.
  • 이러한 오버로드는 내가 사용하는 Configure.WithWeb 메소드에 존재하지 않습니다.

모든 메시지 처리기를 웹 프로젝트로 옮겨서 문제를 해결할 수 있지만이 방법이 가장 좋은 해결책은 아닙니다.

여기에 뭔가가 있습니까?

답변

0

웹 프로젝트에서 NServiceBus를 사용하는 경우 NServiceBus.Configure.With() 대신 NServiceBus.Configure.WithWeb()을 사용하십시오.

또한 웹 응용 프로그램에서 메시지 처리기를로드하려면 Hosting NServiceBus in your own Process에 설명 된대로 .UnicastBus() 다음에 .LoadMessageHandlers() 줄을 포함시켜야합니다. 그렇지 않으면 모든 IHandleMessages<T> 구현이로드되지 않고 웹 응용 프로그램이 송신 전용 끝점으로 작동합니다.

관련 문제