package com.hmdm.notification.guice.module; import com.google.inject.Inject; import com.google.inject.name.Named; import com.hmdm.notification.PushSender; import com.hmdm.notification.PushSenderMqtt; import org.apache.activemq.broker.BrokerService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class NotificationMqttTaskModule { private String serverUri; private BrokerService brokerService; private PushSender pushSender; private static final Logger log = LoggerFactory.getLogger(NotificationMqttTaskModule.class); @Inject public NotificationMqttTaskModule(@Named("mqtt.server.uri") String serverUri, @Named("MQTT") PushSender pushSender) { this.serverUri = serverUri; this.pushSender = pushSender; } /** * <p>Creates the broker service</p> */ public void init() { if (!initBrokerService()) { return; } pushSender.init(); } private boolean initBrokerService() { if (serverUri == null || serverUri.equals("")) { log.info("MQTT service not initialized (parameter mqtt.server.uri not set)"); return false; } brokerService = new BrokerService(); brokerService.setPersistent(false); brokerService.setUseJmx(false); try { brokerService.addConnector("mqtt://" + serverUri); brokerService.start(); log.info("MQTT notification service started at " + serverUri); } catch (Exception e) { log.error("Failed to create MQTT broker service"); e.printStackTrace(); return false; } return true; } }