LoginSignup
0

posted at

updated at

【v42】リアルタイムのマージツールとTickデータのコピーツールが時価情報をRESTサーバーへ送信する

はじめに

過去記事は「auカブコム証券のkabuステーションREST APIに関する記事一覧」。

51番目の記事で、PUSH APIを受信した現値をRESTサーバーへ送信したが、RESTサーバーが起動していないときなど、ローカルファイルには保存され、RESTサーバー側には保存されない場合が発生する。
このような場合に、リアルタイム監視ツールや、Tickデータのコピーツールを起動したときに、RESTサーバーへ送信する。

ゴール

51番目のときは、無条件に追記していたが、後から別ツールを複数回起動すると、同じチャートデータが重複して追記されてしまう。
そこで、URIをr2に変更し、RESTサーバー側のローカルファイルをメモリ上に読み込んで、重複チェックしてから、追記する。
なお、重複チェックのための主キーが存在しないため、CSVの1行まるごとがユニークであるかチェックする。

ベースとなるソース

v40のr12をベースに、v42のr14を作成する。

  • MainWatchChartData_r12 -> MainWatchChartData_r14
  • MainCopyChartData_r12 -> MainCopyChartData_r14
  • CopyChartData_r12 -> CopyChartData_r14

実装

RESTサーバー側の修正は、「【kabusapisrv】自前のRESTサーバーを作成する」で対応する。

既存のexecute()にRESTサーバー送信を追加する。

			List<String> lines = pollingCsvChartData();
			RestClientUtil.postChartData(name, lines);
			copyObj.copyCsvChartData(lines);
			copyObj.writeChartList();
		List<String> lines = readCsvChartData();
		RestClientUtil.postChartData(name, lines);
		copyCsvChartData(lines);
		writeChartList();

テスト

RESTサーバー側のコンソールで、2回実行すると、2回目がwriteCntが0で、件数が増えていないことを確認する。

2022/10/13 09:12:24.708 ChartDataService.update(167100019_F202210): writeCnt=12174, totalCnt=12174
2022/10/13 09:12:37.055 ChartDataService.update(167100019_F202210): writeCnt=0, totalCnt=12174

追記:ソースをarchiveブランチへ移動

PUSH APIを受信した際にRESTサーバーへ送信する運用で、特に問題はないため、あえて別のタイミングで重複するデータを再送信する必要がなかった。オフライン状態で同期する目的もありえるが、ファイルコピーすればよいので、今のところ価値はない。
最新版に移行し、もう使われることはないので、アーカイブする。

githubソース

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0