package org.bk.consumer.service; import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand; import org.bk.consumer.domain.Message; import org.bk.consumer.domain.MessageAcknowledgement; import org.bk.consumer.feign.PongClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; @Service("hystrixPongClient") public class HystrixWrappedPongClient implements PongClient { private static final Logger LOGGER = LoggerFactory.getLogger(HystrixWrappedPongClient.class); @Autowired @Qualifier("ribbonPongClient") private PongClient pongClient; @Override @HystrixCommand(commandKey = "pongCommand", groupKey = "pongGroup", fallbackMethod = "fallBackCall") public MessageAcknowledgement sendMessage(Message message) { return this.pongClient.sendMessage(message); } public MessageAcknowledgement fallBackCall(Message message, Throwable e) { LOGGER.error("In fallback: ", e); MessageAcknowledgement fallback = new MessageAcknowledgement(message.getId(), message.getPayload(), "FAILED SERVICE CALL! - FALLING BACK"); return fallback; } }