3

最近、Nuget を使用してパブリッシャー/サブスクライバー ソリューションを NServiceBus バージョン 3.2.2 にアップグレードしました。私の NServiceBus パブリッシャーとサブスクライバーは両方とも自己ホスト型です。

出版社コード:

NServiceBus.Host.exe (デバッグ開始アクション - プロジェクト プロパティで外部プログラムを開始) を使用して NServiceBus パブリッシャーを開始します。

app.config:

<?xml version="1.0" encoding="utf-8"?>
 <configuration>
  <configSections>
    <section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig,  NServiceBus.Core" />
    <section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" />
    <section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" />
  </configSections>
  <MsmqTransportConfig ErrorQueue="error" NumberOfWorkerThreads="1" MaxRetries="5" />
  <UnicastBusConfig ForwardReceivedMessagesTo="">
    <MessageEndpointMappings></MessageEndpointMappings>
  </UnicastBusConfig>
  <MessageForwardingInCaseOfFaultConfig ErrorQueue="error" />
</configuration>

EndpointConfig.cs:

namespace TrackEventPublisher.EventPublisher
{
   [EndpointName("EventPublisher")]
   public class EndpointConfig : IConfigureThisEndpoint, AsA_Publisher
   {
   }
}

パブリッシャーの実行中に次のエラーが発生しました。

エンドポイントの開始時に例外が発生しました。エラーがログに記録されました。理由: タイプ「RavenTimeoutPersistence」でコンストラクター「Void .ctor(Raven.Client.IDocumentStore)」を呼び出しているときに例外がスローされました。

スタックトレース:

d:\BuildAgent-03\work\nsb.master22\src\hosting\NServiceBus.Hosting\GenericHost.cs:line 45 の NServiceBus.Hosting.GenericHost.Start() で NServiceBus.Hosting.Windows.WindowsHost.Start() でd:\BuildAgent-03\work\nsb.master22\src\hosting\NServiceBus.Hosting.Windows\WindowsHost.cs:line 56 at NServiceBus.Hosting.Windows.Program.<>c_ DisplayClass8.b _4(WindowsHost サービス) d:\BuildAgent-03\work\nsb.master22\src\hosting\NServiceBus.Hosting.Windows\Program.cs:95 行目 Topshelf.Internal.ControllerDelegates 1.StartActionObject(Object obj) in d:\dev\open-source\topshelf\src\Topshelf\Internal\ControllerDelegates.cs:line 18 at Topshelf.Internal.IsolatedServiceControllerWrapper1.<>c_ DisplayClass2.b _1(TService サービス) 内d:\dev\open-source\topshelf\src\Topshelf\Internal\IsolatedServiceControllerWrapper.cs:Topshelf.Internal.ServiceController の 65 行目1.<.cctor>b__1(ServiceController1 sc) in d:\dev\open-source\topshelf\src\Topshelf\Internal\ServiceController.cs:line 35 at Magnum.StateMachine.LambdaAction 1.Execute(T instance, Event event, Object parameter) in :line 0 at Magnum.StateMachine.EventActionList1.Execute(T stateMachine, Event event, Object parameter) in :line 0

このエラーの原因は何ですか?
エンドポイント構成の何が問題なのか誰か教えてもらえますか?

私のソリューションは、以前のバージョンの NServiceBus (バージョン 3.0 より前) でうまく機能しました。

更新:内部例外メッセージは次のとおりです:「リモートサーバーに接続できません」

Raven サーバーは NServiceBus によって自動的に開始されますか? 私のマシンでは実行されていないようです...

更新 さて、何らかの理由で RavenDB サービスが私のマシンで実行されていませんでした。ただし、自動的に開始するように設定されています。私のソリューションは現在正しく機能しています。私はRavenDBについて難しい方法で学ばなければならなかったと思います:)。

RavenDB サービスの実行に問題があった人はいますか?

アップデート

サービスを起動して実行できるようになったので、別のマシンで実行してみます。msmq フォルダーが作成されず、RavenDB が使用できないというエラーが表示されます。実際、別の Windows OS マシンでソリューションを実行した後、RavenDB サービスはインストールされません。バージョン3.2.2で投稿した「RunMeFirst.bat」を実行してみました。ただし、bat ファイルは、Visual Studio で拡張機能をインストールしようとします。Visual Studio がインストールされているが、Nuget 拡張機能がインストールされていない場合、別のエラーが投稿されます。

Windows OS マシンに Visual Studio のインスタンスをインストールせずに、NServiceBus.Host.exe が RavenDB サーバーと msmq フォルダーをインストールできるようにするより良い方法はありますか?

アップデート

うわー、これまでで最も多くの更新!次のクラスをパブリッシャー プロジェクトに追加すると、msmq フォルダーが正常に作成されました。

   class MsmqTransportConfigOverride : IWantCustomInitialization, INeedToInstallInfrastructure<Windows>
   {
      public void Init()
      {
       Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install();
      }

      public void Install(System.Security.Principal.WindowsIdentity identity)
      {
      }
   }

IWantCustomIntialization インターフェイスを実装するこの新しいクラスはうまく機能しているようです。ただし、パブリッシャーを更新して RavenDB を Windows ホスト マシンにインストールするのにまだ苦労しています。これを容易にするコマンドラインプロンプトがあることは知っていますが、別の方法はありますか? INeedToInstallInfrastructure インターフェイスを実装しようとしましたが、サンプルが見つかりません。誰にもアイデアはありますか?

4

1 に答える 1

2

次の場合にのみインストーラーを実行します。 1. エンドポイントを Windows サービスとしてインストールする (プロダクション プロファイルで実行している場合 => デフォルト) 2. デバッグ モードで実行する 3. 統合/ライト プロファイルで実行する

それで、キューが作成されない理由を説明できます(上記のいずれにも当てはまらないと仮定しますか?)

于 2012-06-12T08:33:48.317 に答える