問題タブ [topshelf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
rabbitmq - Windsor Integration の使用時に MassTransit Consumer が呼び出されない
RabbitMQ を介した Mass Transit で Castle Windsor Integration を機能させることができないようです。ウィンザーを写真に紹介するまで、すべてがうまく機能していました. Castle.Windsor 3.2 と MassTransit.WindsorIntegration 2.9 を参照し、アプリケーション内で使用するコンテナーを構成しました。次の方法で MassTransit Consumers を登録しています。
この行の実行後にコンテナをデバッグして調べると、他のすべてのコンポーネントとともにすべてのコンシューマが正常に登録されていることがわかります。次に、サービス バスを初期化して登録する次のコードがあります。
LoadFrom(IWindsorContainer container)
MassTransit.WindsorIntegration が提供する拡張メソッドを使用しています。
私がこれまでに見つけたすべての例はここで終わりであり、これがあなたがしなければならないすべてであることを示しています。残念ながら、コンシューマーが呼び出されることはなく、メッセージがキューに積み上げられます (最終的にはタイムアウトになり、エラー キューに移動します)。コンシューマ キューにメッセージがまったく表示されているという事実 (+ RabbitMQ 管理ツールを介してキューにバインドされている単一のコンシューマが表示されます) は、コンシューマがおそらく適切にサブスクライブされていることを示しています。問題があります。
Windsor と MassTransit の NLog ログを追加しましたが、ログにエラーは表示されません。この時点でトラブルシューティングをどのように進めればよいかわかりません。何か案は?
また、このアプリケーションは現在、開発に Topshelf を使用する単なるコンソール アプリケーションです。最終的には、Windows サービスとしてインストールされます。関係あるかどうかわかりませんが、念のため書いておきます。
アップデート
テストとして、非常に単純なテスト メッセージを処理するためのパラメーターのないコンストラクターを持つ非常に単純な Consumer を作成しました。このコンシューマーは正常に呼び出されました! ただし、「実際の」コンシューマーには、コンストラクターを介して注入する必要がある依存関係があります。コンテナがこれらを解決してくれることを期待していましたが、どうやら何らかの問題が発生しているようです。それについてログに何も表示されないのは奇妙です。乞うご期待...
psexec - psexec を使用してリモートで TopShelf インストールを実行できない
リモート マシンに Windows サービスをインストールしようとしています。サービスは TopShelf を使用して実装されます。次の psexec コマンドを実行しています。
受け取ったエラー: エラー - サービスが異常終了しました Topshelf.HostConfigurationException: サービスが正しく構成されていませんでした: [失敗] コマンド ライン 不明なコマンド ライン オプションが見つかりました: 引数: "インストール"
TopShelf インストーラーを実行しているのではなく、exe を実行して有効な引数ではない「install」を渡しているようです。
どんな助けでも大歓迎です!
c# - TopShelf.HostFactory.Run を呼び出した後、ServiceName/Instance を取得します。
TopShelf.HostFactory.Run() の呼び出し後に TopShelf サービスに指定された ServiceName と InstanceName を取得する方法はありますか?
1 つのオプションは、コマンド ライン引数から直接プルすることです。
しかし、TopShelf がこれらのプロパティ自体を公開するかどうかは興味深いことです。
TopShelf のソースを掘り下げた後、公開されているスポット/プロパティが表示されません。
c# - Topshelf の使用時にサービスが開始または制御要求にタイムリーに応答しませんでした
コマンドラインからの入力に依存する一流のサービスを作成しようとしています。しかし、コマンドライン引数の構成を使用すると、サービスは「タイムリーに開始」できません。
サービスの私の構成:
言語設定の構成を削除して値をハードコーディングすると、サービスは問題なく開始されます...何かアイデアはありますか?
スタックトレースは次のとおりです。
windows-services - Topshelf サービスを起動時に一度実行してから停止する
意図したとおりに実行されているように見える TopShelf サービス / コンソール アプリを作成しました。
私はこれがうまくいくことを望んでいました:
おそらく、サービスを停止させるためではなく、クリーンアップのために this.Stop() コマンドがあるためです。
私の Program.cs は次のようになります。
実行の最後にサービスを停止するにはどうすればよいですか?
更新: ダミアンの入力に基づいて、私は今持っています:
および更新された Program.cs
ただし、これはコンパイルされません。私のコンパイラは、私のコメント (またはその周り) に ")" がないことを示唆しています (上記のコードを参照)。
私は近くにいるような気がします...何かアイデアはありますか?
c# - 例外をキャッチして Topshelf サービスを停止するには?
私はトップシェルフ Windows サービスを持っており、いくつかのチェック (つまり、xml ファイルが存在するかどうか) を行いたいのですが、チェックが失敗した場合は、Windows サービスを停止する必要があります。
そこで、 Start() メソッドでチェックを実行してから、例外を発生させてみました。
ただし、タスクマネージャーで手動で強制終了する必要がある例外の後、Windowsサービスはプロセスとして残ります。
特定の条件 (ファイルが見つからないなど) が成立する場合にサービスを実行しない方法はありますか?