0

おそらく私はここで何かが欠けています.この質問はおそらくこれと同じので、重複して申し訳ありません.

Sends() コマンドを NServiceBus サーバーに非常に喜んで送信する MVC4 サイトがあります。同じ MVC サイトが、同じ NServiceBus サーバーから発行された IEvents Publish() をサブスクライブできるようにしたいと考えています。しかし、私はそれを機能させることができません。

メッセージはサーバーから発行され、MSMQ に表示されていますが、MVC サイトでそれらを取得できません。

これは NServiceBus 3.3.5 で可能ですか? その場合、MVC サイトを機能させるにはどのようにセットアップすればよいですか?

前もって感謝します!

編集: MVC アプリにある構成は次のとおりです。

Configure.With()
            .Log4Net()
            .StructureMapBuilder()
            .MsmqTransport()
            .IsTransactional(false)
            .PurgeOnStartup(false)
            .UnicastBus()
            .LoadMessageHandlers()
            .ImpersonateSender(false)
            .JsonSerializer()
            .CreateBus()
            .Start(() => Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install());

IConfigureThisEndpoint または AsA_ インターフェイスを実装する EndpointConfig クラスがありません。追加しようとしましたが、呼び出されず、ホストが何であるか、または Web アプリから NServiceBus ホスト アプリケーションを開始する方法がわかりません。または、コードが IIS 内にある場合 (それが理にかなっていれば!)、ホストがどのコンテキストで実行されるかさえもです。

4

1 に答える 1

0

私の推測では.LoadMessageHandlers()、流暢な構成で次の行が欠落している可能性があります。.UnicastBus()これは、セルフホステッド アプリケーションが送信されたメッセージを処理しない原因となる最も一般的なエラーです。

そうでない場合は、流暢な構成ブロックを質問に追加してください。調査します。

編集:流暢な設定が投稿された後

私の次の推測は、シリアライザーの宣言が遅すぎるということです。この.UnicastBus()ステップは、「このことを始めましょう!」の前の最後のストップの 1 つです。おそらく、この時点までに、構成はデフォルトの XmlSerializer を使用することを前提としていると思います。シリアライザーの行を直後に移動してみて、.StructureMapBuilder()それがうまく機能するかどうかを確認していただけますか?

.DefaultBuilder()それでも問題が解決しない場合は、IoC コンテナーの問題を除外するために一時的にを使用することを検討してください。

他のコメントに関しては、自己ホスト型バスには EndpointConfig がありません。これは、NServiceBus.Host.exe のみによってホストされるエンドポイントへのポインターです。

また、この流暢な構成をどこから呼び出しているかは完全には明らかではないと思います。このコードは、webapp の起動時に 1 回呼び出す必要があります (通常は、Global.asax のアプリケーションの開始メソッドから)。Web アプリケーションが管理されているため、NServiceBus ホストのように NServiceBus パイプラインを見つけて接続するための自動アセンブリ スキャンはありません。

于 2013-04-08T14:21:36.333 に答える