2

NSerivceBusを理解しようとしていますが、ほとんどスムーズに進んでいますが、EndPointNameの構成方法を理解するのに苦労しています。

したがって、たとえば、いくつかの例を実行した後、次のことを思い付くことができましたが、EndPoint名を変更しようとしても失敗します。

したがって、myServerキューは現在、名前空間から取得された名前です。

  namespace MyServer
{
    class EndPointConfig : IConfigureThisEndpoint, AsA_Server
    {
    }
}

しかし、[EndpointName( "AnotherQueue")]を置くと、何も変わりません(myServerキューがいっぱいにならないことを除いて)。

また、Global.ASAXを変更しようとしました。

public static IBus Bus { get; set; }
        void Application_Start(object sender, EventArgs e)
        {
            Bus = NServiceBus.Configure.With()
                .Log4Net()
                .DefaultBuilder()
                .DefineEndpointName("AnotherQueue")
                .XmlSerializer()
                .MsmqTransport()
                    .IsTransactional(false)
                    .PurgeOnStartup(false)
                .UnicastBus()
                    .ImpersonateSender(false)
                .CreateBus()
                .Start();
        }

しかし、繰り返しますが、それは機能しませんでした。

私はmmcを見て、そこでキューに入れられているメッセージをチェックすることによってそれをテストしています。

最後に、web.configを変更してみました

<configSections>
        <section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NserviceBus.Core"/>
        <section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core"/>
    </configSections>

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

    <UnicastBusConfig>
        <MessageEndpointMappings>
            <add Messages="MyMessage" Endpoint="AnotherQueue"></add>
        </MessageEndpointMappings>
    </UnicastBusConfig>

そして、まだ何もありません。

誰かが助けることができますか?私はまだこれに頭を悩ませようとしています(これは私にとっては新しいテクノロジーです)ので、この質問をうまくやらなかった場合は謝罪します。

よろしくお願いしますLex

4

1 に答える 1

6

カップルのもの:

100%確信はありませんが、Webアプリケーションでホストしている場合は、IConfigureThisEndpointとAsA_Serverを使用したくないと思います。Application_Startにある構成コードだけで十分だと思います。構成のもう1つの方法は、NSB独自のプロセスで(Windowsサービスまたはコンソールとして)ホストする場合です。

DefineEndPointName("AnotherQueue")の後に最初のコマンドとして入れてみてくださいNServiceBus.Configure.With()。これは私がセットアップして機能する方法であり、With()の後のコマンドの順序は重要であり、サイレントに失敗する可能性があると思います(これは将来のリリースで対処されると思います)。

達成しようとしていることによっては、unicastbus構成がまったく必要ない場合があります。これは、クライアント側でエンドポイントを定義するために使用されます。つまり、アプリが通信するエンドポイントを定義するために使用されます。

最後に、Webアプリを実行するときにデバッグウィンドウを使用して、何が問題になっているのかについての手がかりを見つけます。NSBは、デバッグモードで非常に有用なログ情報を多数生成します。これらはすべて、デバッグウィンドウに送信する必要があります。アプリにキューを作成する権限がないか、それらに沿ったものがない可能性があります。そのビットを理解すると、多くの「学習曲線の問題」のトラブルシューティングがはるかに簡単になりました。

于 2013-01-18T19:24:48.487 に答える