Java 检查方法是否仍然 运行
Java Check if a method is still running
我有问题。我在我的项目中使用 Binance API。有了这个 API 我打开一个烛台流来接收不同烛台周期的最新更新。烛台流方法在 class 中,如下所示:
public class CandlestickStream {
private String market;
private String coin;
private String period;
public CandlestickStream(String market, String coin, String period) throws SecurityException, IOException {
this.market = market;
this.coin = coin;
this.period = period;
startCandlestickEventStreaming();
}
/**
* Starting a stream to get the current candlestick data of the given symbol and period
* @param symbol The symbol you want the data from
* @param interval The period of the candlestick
* @throws IOException
* @throws SecurityException
*/
public void startCandlestickEventStreaming() throws SecurityException, IOException {
BinanceApiWebSocketClient client = BinanceApiClientFactory.newInstance().newWebSocketClient();
String symbol = createSymbolString(market, coin);
CandlestickInterval interval = periodToInterval(period);
client.onCandlestickEvent(symbol, interval, response -> {
System.out.println(response);
});
}
}
流使用以下代码开始:
// Loop over every market-coin-period combination and start the firstrun and stream
for (String market : markets) {
for (String coin : coins) {
for (String period : periods) {
// Run candlestick stream to monitor if it's still running
new CandlestickStream(market, coin, period);
}
}
}
但我注意到 binance 可能会重新启动服务器,这会导致流功能停止,然后我将无法正常接收任何更新。所以我需要一种方法来检查函数是否仍然是 运行。如果没有,我需要重新启动它。控制进程以检查它是否仍然是 运行 的最佳方法是什么,如果不是,则重新启动 class?
我会说当您打开流时创建一个数据库条目(状态 = INIT_READ)。完成后更新状态 (DONE_READ)。批处理作业的工作方式。
并且您可以创建一个调度程序以在每 X 时间后检查该条目的状态。
通过服务器启动时的状态检查,您可以决定您需要做什么。
我有问题。我在我的项目中使用 Binance API。有了这个 API 我打开一个烛台流来接收不同烛台周期的最新更新。烛台流方法在 class 中,如下所示:
public class CandlestickStream {
private String market;
private String coin;
private String period;
public CandlestickStream(String market, String coin, String period) throws SecurityException, IOException {
this.market = market;
this.coin = coin;
this.period = period;
startCandlestickEventStreaming();
}
/**
* Starting a stream to get the current candlestick data of the given symbol and period
* @param symbol The symbol you want the data from
* @param interval The period of the candlestick
* @throws IOException
* @throws SecurityException
*/
public void startCandlestickEventStreaming() throws SecurityException, IOException {
BinanceApiWebSocketClient client = BinanceApiClientFactory.newInstance().newWebSocketClient();
String symbol = createSymbolString(market, coin);
CandlestickInterval interval = periodToInterval(period);
client.onCandlestickEvent(symbol, interval, response -> {
System.out.println(response);
});
}
}
流使用以下代码开始:
// Loop over every market-coin-period combination and start the firstrun and stream
for (String market : markets) {
for (String coin : coins) {
for (String period : periods) {
// Run candlestick stream to monitor if it's still running
new CandlestickStream(market, coin, period);
}
}
}
但我注意到 binance 可能会重新启动服务器,这会导致流功能停止,然后我将无法正常接收任何更新。所以我需要一种方法来检查函数是否仍然是 运行。如果没有,我需要重新启动它。控制进程以检查它是否仍然是 运行 的最佳方法是什么,如果不是,则重新启动 class?
我会说当您打开流时创建一个数据库条目(状态 = INIT_READ)。完成后更新状态 (DONE_READ)。批处理作业的工作方式。
并且您可以创建一个调度程序以在每 X 时间后检查该条目的状态。
通过服务器启动时的状态检查,您可以决定您需要做什么。