2016-03-30 4 views
0

私は、Azureワーカーロール上で動作するNServiceBusエンドポイントを持っています。 ServiceControl.Plugin.Nsb5.Heartbeatパッケージをインストールしました。 VSからクラウドサービスに直接展開すると、エンドポイントがServicePulseに表示され、ハートビートが期待どおりに表示されます。NServiceBus ServiceControlハートビートプラグインのデバッグ

自動展開プロセスを実行すると、エンドポイントはservicepulseによって検出されず、ハートビートも発生しません。 (ハートビートプラグインがインストールされていない場合でも、ServicePulseはエンドポイントを検出し、そのエンドポイントにハートビートプラグインがインストールされていないことを通知します)。

RDを使用してログインすると、その部分にハートビートアセンブリが表示されます。私の設定は、両方のシナリオのために同じですが、私は参考のためにそれをここに追加します:私のconfigのAppSettingsで

を:私の設定の

<add key="Heartbeat/Interval" value="00:00:01" /> 
<add key="ServiceControl/Queue" value="xxx.xxx.servicecontrol" /> 

レクリエーション:

<section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" /> 
<MessageForwardingInCaseOfFaultConfig ErrorQueue="error" /> 

私に、Servicecontrolインスタンスローカルのコンピュータで実行され、正しいサービスバスを監視しています。エラーキュー名はconfigと同様にerrorに設定され、エラー転送キュー名はerror.logに設定されます。 workerroleが起動し、NSBが開始されると

することは、私は(ところで、私はハートビートを送信しているworkerroleで見つけることができるものとまったく同じである)のログでこれを見つけることができます:

Name: Heartbeats 
Version: 2.0.0 
Enabled by Default: Yes 
Status: Enabled 
Dependencies: None 
Startup Tasks: HeartbeatStartup 

私は全く同じコードが異なった振る舞いをしている理由を全く知りません。これは、同じコード、同じ設定、同じ設定、異なる方法で展開されたものです。デプロイされたアセンブリを比較すると、違いを検出できません。ハートビートアセンブリはそこにあり、NSBも同様にそれをピックアップしているように見えます。私はその特定のエンドポイントから心拍を受け取っていないだけです。

私は何が欠落している可能性がありますか?または私はこれを修正しようとすることができますか?

ありがとうございます!

答えて

0

両方のエンドポイントがハートビートを送信していますが、ServicePulseはそれらを1つのエンドポイントとして示しています。

ServicePulseでは、エンドポイント@ MachineAを1つ見ることができました。 MachineAは、CloudService "Test"のワーカーロールインスタンスの実際のマシン名でした。 RDを介してこのインスタンスにログインし、NSBのログがハートビート機能をアクティブにするのを見ることができます。 CloudService "Dev"への自動デプロイメントでデプロイしたとき、私はServicePulseに追加のエンドポイントを持っていませんでした。 CloudService "Test"を完全に削除することにしました。

ServicePulseを確認したところ、Endpoint @ MachineAはまだ稼動していて、毎秒ハートビートを受信して​​いました。その特定のインスタンスでCloudService "Test"を削除したばかりの理由はわかりませんでした。

エンドポイントの名前を変更し、自動化された手順でCloudService "Dev"にデプロイすることにしました(CloudService "Test"は存在しません)。その時点でエンドポイントEndpoint @ MachineAが停止し、新しいEndpointRenamed @ MachineXが起動し、ハートビートメッセージを受信しました。

したがって、両方のエンドポイントがハートビートを送信していたという意味では問題にはなりませんでした。問題は、ServicePulseが何とかそれらを同じエンドポイントとみなしているという事実にあります。彼らは同じ名前を持っていましたが、ServicePulseの別のエンドポイントに変換されるべき別のマシン上の別のクラウドサービスでホストされました。

誰かを助ける希望!