| | |
| | | |
| | | @Autowired |
| | | private List<HkMessageHandler> hkMessageHandlers; |
| | | @Autowired |
| | | private HkTopicBuilder hkTopicBuilder; |
| | | |
| | | @PostConstruct |
| | | public void init() { |
| | |
| | | } |
| | | |
| | | public void dispatch(String topic, String payload) { |
| | | HkTopicInfo topicInfo = this.parseTopic(topic); |
| | | HkTopicInfo topicInfo = hkTopicBuilder.parseTopic(topic); |
| | | if (topicInfo == null) { |
| | | log.warn("ignore mqtt topic, unsupported topic format, topic={}", topic); |
| | | return; |
| | |
| | | } |
| | | |
| | | hkMessageHandler.handle(topicInfo, payload); |
| | | } |
| | | |
| | | |
| | | public HkTopicInfo parseTopic(String topic) { |
| | | if (!StringUtils.hasText(topic)) { |
| | | return null; |
| | | } |
| | | |
| | | String[] parts = topic.split("/"); |
| | | if (parts.length != 5) { |
| | | return null; |
| | | } |
| | | |
| | | HkTopicInfo topicInfo = new HkTopicInfo(); |
| | | topicInfo.setRawTopic(topic); |
| | | topicInfo.setInterfaceName(parts[0]); |
| | | topicInfo.setMajorVersion(parts[1]); |
| | | topicInfo.setManufacturer(parts[2]); |
| | | topicInfo.setAgvNo(parts[3]); |
| | | topicInfo.setSubTopic(parts[4]); |
| | | return topicInfo; |
| | | } |
| | | |
| | | } |
| | |
| | | String supportSubTopic(); |
| | | |
| | | void handle(HkTopicInfo topicInfo, String payload); |
| | | |
| | | } |
| | |
| | | import com.zy.acs.hk.latent.mqtt.type.HkSubTopicType; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.util.StringUtils; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | |
| | | + "/" + agvNo |
| | | + "/" + subTopic; |
| | | } |
| | | |
| | | public HkTopicInfo parseTopic(String topic) { |
| | | if (!StringUtils.hasText(topic)) { |
| | | return null; |
| | | } |
| | | |
| | | String[] parts = topic.split("/"); |
| | | if (parts.length != 5) { |
| | | return null; |
| | | } |
| | | |
| | | HkTopicInfo topicInfo = new HkTopicInfo(); |
| | | topicInfo.setRawTopic(topic); |
| | | topicInfo.setInterfaceName(parts[0]); |
| | | topicInfo.setMajorVersion(parts[1]); |
| | | topicInfo.setManufacturer(parts[2]); |
| | | topicInfo.setAgvNo(parts[3]); |
| | | topicInfo.setSubTopic(parts[4]); |
| | | return topicInfo; |
| | | } |
| | | |
| | | } |
| | |
| | | private String agvNo; |
| | | |
| | | private String subTopic; |
| | | |
| | | } |
| | |
| | | log.info("handle connection message, agvNo={}, topic={}, payload={}", |
| | | topicInfo.getAgvNo(), topicInfo.getRawTopic(), payload); |
| | | } |
| | | |
| | | } |
| | |
| | | log.info("handle factsheet message, agvNo={}, topic={}, payload={}", |
| | | topicInfo.getAgvNo(), topicInfo.getRawTopic(), payload); |
| | | } |
| | | |
| | | } |
| | |
| | | log.info("handle state message, agvNo={}, topic={}, payload={}", |
| | | topicInfo.getAgvNo(), topicInfo.getRawTopic(), payload); |
| | | } |
| | | |
| | | } |
| | |
| | | log.info("handle visualization message, agvNo={}, topic={}, payload={}", |
| | | topicInfo.getAgvNo(), topicInfo.getRawTopic(), payload); |
| | | } |
| | | |
| | | } |