質問

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-メッセージの送信 PricingInformation.Messages.ModelSupplierDetailsUpdatedMessage、PricingInformation.Messages、Version = 1.0.0.0、Culture = neutral、PublicKeyToken = null、ID 2c642672-1bf1-48d4-a90f- 734e2fdd726d \ 8267から宛先worker2へ。

まだ何を試みても、私が微調整したとしても(すでに3時間経過している場合)、メッセージはキューに表示されません。私は例外を見つけることができず、すべてのデバッグレベルのログを記録しています。

役に立ちましたか?

解決

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top