문제

nservicebus를 통해 메시지를 보내는 데 어려움이 있습니다. win7 x64에서 개발중인 ASP.NET MVC 웹 앱이 있습니다.

       <MsmqTransportConfig    InputQueue="worker"    ErrorQueue="error"    NumberOfWorkerThreads="1"    MaxRetries="5"   />

  <UnicastBusConfig>
    <MessageEndpointMappings>
      <add Messages="PricingInformation.Messages" Endpoint="worker2" />
    </MessageEndpointMappings>   </UnicastBusConfig>

Application_start에서 나는 다음을 연결합니다.

var bus = NServiceBus.Configure.WithWeb()
            .StructureMapBuilder()
            .XmlSerializer()
            .MsmqTransport()
                .IsTransactional(false)
                .PurgeOnStartup(false)
            .UnicastBus()
                .ImpersonateSender(false)
            .CreateBus()
            .Start();

내가 관심있는 행동이 내가 발사하는 앱에서 일어날 때

    public override void HandleEvent(SupplierPricingUpdatedEvent updatedEvent)
    {
        bus.Send(new ModelSupplierDetailsUpdatedMessage() {Id = updatedEvent.Id})
        return;
     }

ModelSupplierDetailSupdatedMessage는 pricingInformation.message 인터페이스 마커 Imessage를 사용한 Messages의 간단한 클래스입니다.

MSMQ 대기열은 트랜잭션이 아닌 설정이며 네트워크 서비스 및 IIS_IUSR을 포함한 모든 사람은 완전히 제어됩니다 (Deseperate 문제 해결 조치)

log4net은 다음을 보여줍니다.

DEBUG NServiceBus.Utils.MsmqUtilities  14 - Checking if queue exists: worker.

debug nservicebus.utils.msmqutilities 14- 큐가 있는지 확인 : 오류. debug nservicebus.unicast.unicastbus worker.15- nservicebus.sagapersisters.nhibernate.nhibernatemessagemodule info inservicebus.unicast.unicastbus worker.15- 작업자 초기화. debug nservicebus.unicast.unicastbus worker.15- nservicebus.sagapersisters.nhibernate.nhibernatemessagemodule debug nservicebus.unicast.unicastbus 9- 메시지 보내기 pricinginformation.messages.modelsupplierDetailSupdatedMessage, pricingInformation.Messages, 버전 = 1.0.0.0, Culture = Neutral, PublicKeyToken = ID가 포함 된 NULL 2C642672-1BF1-48D4-A90F-734E2FDD726D 8267 대 목적지로 2.

그러나 내가 무엇을 시도하든, 내가 조정하는 것 (이미 3 시간이 지났음)에 상관없이 메시지는 큐에 나타나지 않습니다. 나는 예외를 찾을 수없고 모든 것에 디버그 레벨 로깅이 있습니다 .. 아마도 간단한 도움이 될 것입니다.

도움이 되었습니까?

해결책

문제는 수동으로 큐를 비 트랜잭션으로 설정하면 작동하지 않는다는 것입니다. nservicebus "istransactional"속성을 거짓으로 설정한다고해서 비 트랜잭션 대기열로 작업 할 수 있다는 의미는 아닙니다.

대기열을 삭제하고 트랜잭션으로 재현하거나 v2.0의 베타를 사용하는 경우 nservicebus가 큐를 만들도록하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top