1

NServiceBus 経由でメッセージを送信できません。Win7 x64で開発しているASP.Net MVC Webアプリがあり、web.configを次のように構成しました

       <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 は、インターフェイス マーカー IMessage を使用し、Serializable 属性で装飾された PricingInformation.Messages の単純なクラスです。

MSMQ キューはセットアップされており、トランザクションではなく、NETWORK SERVICE と IIS_IUSRS を含む全員が完全に制御できます (必死のトラブルシューティング手段で)。

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 で 'HandleBeginMessage' を呼び出しています INFO NServiceBus.Unicast.UnicastBus Worker.15 - ワーカーが初期化されました。DEBUG NServiceBus.Unicast.UnicastBus Worker.15 - NServiceBus.SagaPersisters.NHibernate.NHibernateMessageModule で ' HandleEndMessage ' を呼び出しています DEBUG NServiceBus.Unicast.UnicastBus 9 -メッセージを送信していますニュートラル、PublicKeyToken=null、ID 2c642672-1bf1-48d4-a90f-734e2fdd726d\8267 を宛先 worker2 に送信します。

それでも、何を試しても、何を微調整しても (すでに 3 時間かかりました)、メッセージがキューに表示されることはありません。私は例外を見つけることができず、すべてにデバッグレベルのログを記録しています..おそらく何か簡単な助けがあります

4

1 に答える 1

6

問題は、手動でキューを非トランザクションとして設定すると、機能しないことです。NServiceBus の「IsTransactional」プロパティを false に設定しても、非トランザクション キューを操作できるわけではありません。

キューを削除してトランザクションとして再作成してみてください。v2.0 のベータ版を使用している場合は、NServiceBus にキューを作成させてください。

于 2009-10-23T06:39:18.920 に答える