package com.xcong.excoin.quartz.job; import com.huobi.client.SubscriptionClient; import com.huobi.client.SubscriptionOptions; import com.huobi.client.model.Candlestick; import com.huobi.client.model.enums.CandlestickInterval; import com.xcong.excoin.modules.symbols.service.SymbolsService; import com.xcong.excoin.rabbit.pricequeue.WebsocketPriceService; import com.xcong.excoin.utils.CoinTypeConvert; import com.xcong.excoin.utils.RedisUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import javax.annotation.Resource; /** * 最新价更新 * * @author wzy * @date 2020-05-28 **/ @Slf4j @Component @ConditionalOnProperty(prefix = "app", name = "day-line", havingValue = "true") public class DayLineDataUpdateJob { @Resource private RedisUtils redisUtils; @Resource private SymbolsService symbolsService; @Resource private WebsocketPriceService websocketPriceService; @PostConstruct public void initNewestPrice() { log.info("#=======价格更新开启=======#"); SubscriptionOptions subscriptionOptions = new SubscriptionOptions(); subscriptionOptions.setConnectionDelayOnFailure(5); subscriptionOptions.setUri("wss://api.hadax.com/ws"); SubscriptionClient subscriptionClient = SubscriptionClient.create("", "", subscriptionOptions); subscriptionClient.subscribeCandlestickEvent("btcusdt,ethusdt,eosusdt,etcusdt,ltcusdt,bchusdt,xrpusdt", CandlestickInterval.DAY1, (candlestickEvent) -> { Candlestick data = candlestickEvent.getData(); redisUtils.set(CoinTypeConvert.convert(candlestickEvent.getSymbol()), data); }); } }