はじめに
過去記事は「auカブコム証券のkabuステーションREST APIに関する記事一覧」。
41番目の記事までは、ローカルディスクにチャートデータを追記していたが、それに加えて、50番目の記事で作成したRESTサーバーに送信して、別筐体にもチャートデータを保存する。
ベースとなるソース
v35.MainChartData_r3をベースに、v41.MainChartData_r13を作成する。
HTTP接続テストのため、kabusapisrvのtest.MainTestClientをベースに、v41.TestClientを作成する。
実装
JSONパーサーがjacksonからgsonに変わるため、jsonData()が以下のように修正する。
private static String jsonData(ChartData cd) {
Gson gson = new Gson();
String json = gson.toJson(cd);
return json;
}
1行づつファイルに保存する際に、リストに追加して、最後にPOSTする。
pw.println()では例外を投げないので、ループの中で中断されることはない見込み。
try (PrintWriter pw = FileUtil.writer(si.getFilePath(DB_FILENAME), FileUtil.UTF8, true)) {
ChartData cd = new ChartData(si.getDirName());
int writeCnt = 0;
List<String> bufList = si.getAndClearChartData();
for (String s : bufList) {
String data = parseChartData(si, s);
if (data != null) {
pw.println(data);
writeCnt++;
cd.addRecord(data);
}
}
if (writeCnt > 0) {
String msg = String.format("code=%s, bufList.size=%d, writeCnt=%d", si.getDirName(), bufList.size(), writeCnt);
StdoutLog.timethreadprintln(clazz, "writeChartData()", msg);
System.out.flush();
postChartData(cd);
}
} catch (IOException e) {
テスト
kabusapisrvを起動し、ポート8080で待機する。
MainChartData_r13を起動し、PUSH APIを受信した際に、ローカルの/tmp/chartに保存されると同時に、RESTサーバーの/tmp/server/chartに保存されることを確認する。
追記:ソースをarchiveブランチへ移動
最新版に移行し、もう使われることはないので、アーカイブする。
githubソース