2016-06-16 4 views
1
引数工assがnewtosoft Json.NETでJSONから直列化復元され

成功のジョブの詳細で引数の値を隠す方法は?

List<SomeClass> 

私のアプリケーション・エンキューの仕事。このように:

オープン成功のジョブの詳細は、私が見てきた
BackgroundJob.Enqueue(() => myJob.jobStartMethos(List<SomeClass> argument)); 

MyJobClass myJob = Activate<MyJobClass>(); 
myJob.jobStartMethod(
new { FromJson<SomeClass>("json string"), FromJson<SomeClass>("json string"), FromJson<SomeClass>("json string"), FromJson<SomeClass>("json string"), FromJson<SomeClass>("json string"), FromJson<SomeClass>("json string") ... etc... 

この引数は大きすぎて、本当にの詳細を参照するには防ぐことができます。どのように私はこれを修正することができます?私はSomeClassでtoString()をオーバーライドしようとしましたが、これは役に立ちません。 そして私は試しました

JobHelper.SetSerializerSettings(new JsonSerializerSettings 
      { 
       TypeNameHandling = TypeNameHandling.None 
      }); 

しかし、これは役に立ちません。

+2

私はちょうど興味があります、あなたはそこをどのような価値観ですか?大規模なバックグラウンドジョブの引数は一般的に悪い習慣です。 – odinserj

+0

私はHangfireで1つの定期的な仕事をしています。このジョブは15分ごとに実行され、最新の更新されたオブジェクトを取得するためにREST APIによってCRMに照会します(CRMが大きすぎるため、そのようなやり取りは唯一の方法です)。このオブジェクトには説明、履歴などが含まれます。CRMレスポンスJSONからオブジェクトを逆シリアル化した後、バックグラウンドジョブの引数として提供されます。バックグラウンドジョブがオブジェクトの変更を見て特定の方法で反応する(変更を加える、他のシステムで警告する) バックグラウンドジョブが多すぎます。この作業を制御するために、私はmodel.listen(オブジェクト)をバックグラウンドジョブとして非同期で実行する代わりにバックグラウンドジョブとして使用しました。model.listen(objects) – sintasy

+0

しかし、別のテーブルを作成してそこに値をダンプし、処理後のレコード)?このようにして、メソッドを冪等にすることもできます。 – odinserj

答えて

0

はい、大きなジョブ引数をデータベースに格納し、JobClass.fromDatabase(row id)のようなジョブを実行するとよい解決策です。たとえば、ジョブが失敗した場合は、より多くのことを知り、古い引数(ジョブが失敗した結果)でジョブを再キューできるようになります。

関連する問題