public static void main(String[] args) { String topic = "/group/1ffb66a0-304e-11e5-a2cb-0800200c9a66/send_data"; String contentStr = "Message from KC"; int qos = 2; String broker = "tcp://isplanet.dyndns-office.com:1883"; String clientId = "JavaSample"; MemoryPersistence persistence = new MemoryPersistence(); Content content = new Content(); content.setDevID("80:C1:6E:F3:E7:6B"); content.setDevName("KC"); content.setGroupID("1ffb66a0-304e-11e5-a2cb-0800200c9a66"); content.setSendTimestamp(String.valueOf(System.currentTimeMillis())); Shot shot = new Shot(); shot.setMessage("Test"); shot.setImageUrl("http://ab.unayung.cc/uploads/photo/file/000/000/030/LN07_005.jpg"); shot.setPosition(new GeoPoint(25.042299, 121.507695)); content.setShot(shot); contentStr = JsonDataFactory.getJson(content); // System.exit(0); try { MqttClient sampleClient = new MqttClient(broker, clientId, persistence); MqttConnectOptions connOpts = new MqttConnectOptions(); connOpts.setCleanSession(true); System.out.println("Connecting to broker: " + broker); sampleClient.connect(connOpts); System.out.println("Connected"); System.out.println("Publishing message: " + contentStr); MqttMessage message = new MqttMessage(contentStr.getBytes()); message.setQos(qos); sampleClient.publish(topic, message); System.out.println("Message published"); sampleClient.disconnect(); System.out.println("Disconnected"); System.exit(0); } catch (MqttException me) { System.out.println("reason " + me.getReasonCode()); System.out.println("msg " + me.getMessage()); System.out.println("loc " + me.getLocalizedMessage()); System.out.println("cause " + me.getCause()); System.out.println("excep " + me); me.printStackTrace(); } }
/** * The main entry point of the sample. * * <p>This method handles parsing the arguments specified on the command-line before performing * the specified action. */ public static void main(String[] args) { // Default settings: boolean quietMode = false; String action = "publish"; String topic = ""; String message = "Message from async waiter Paho MQTTv3 Java client sample"; int qos = 2; String broker = "m2m.eclipse.org"; int port = 1883; String clientId = null; String subTopic = "Sample/#"; String pubTopic = "Sample/Java/v3"; boolean cleanSession = true; // Non durable subscriptions boolean ssl = false; String userName = null; String password = null; // Parse the arguments - for (int i = 0; i < args.length; i++) { // Check this is a valid argument if (args[i].length() == 2 && args[i].startsWith("-")) { char arg = args[i].charAt(1); // Handle arguments that take no-value switch (arg) { case 'h': case '?': printHelp(); return; case 'q': quietMode = true; continue; } // Now handle the arguments that take a value and // ensure one is specified if (i == args.length - 1 || args[i + 1].charAt(0) == '-') { System.out.println("Missing value for argument: " + args[i]); printHelp(); return; } switch (arg) { case 'a': action = args[++i]; break; case 't': topic = args[++i]; break; case 'm': message = args[++i]; break; case 's': qos = Integer.parseInt(args[++i]); break; case 'b': broker = args[++i]; break; case 'p': port = Integer.parseInt(args[++i]); break; case 'i': clientId = args[++i]; break; case 'c': cleanSession = Boolean.valueOf(args[++i]).booleanValue(); break; case 'k': System.getProperties().put("javax.net.ssl.keyStore", args[++i]); break; case 'w': System.getProperties().put("javax.net.ssl.keyStorePassword", args[++i]); break; case 'r': System.getProperties().put("javax.net.ssl.trustStore", args[++i]); break; case 'v': ssl = Boolean.valueOf(args[++i]).booleanValue(); break; case 'u': userName = args[++i]; break; case 'z': password = args[++i]; break; default: System.out.println("Unrecognised argument: " + args[i]); printHelp(); return; } } else { System.out.println("Unrecognised argument: " + args[i]); printHelp(); return; } } // Validate the provided arguments if (!action.equals("publish") && !action.equals("subscribe")) { System.out.println("Invalid action: " + action); printHelp(); return; } if (qos < 0 || qos > 2) { System.out.println("Invalid QoS: " + qos); printHelp(); return; } if (topic.equals("")) { // Set the default topic according to the specified action if (action.equals("publish")) { topic = pubTopic; } else { topic = subTopic; } } String protocol = "tcp://"; if (ssl) { protocol = "ssl://"; } String url = protocol + broker + ":" + port; if (clientId == null || clientId.equals("")) { clientId = "SampleJavaV3_" + action; } // With a valid set of arguments, the real work of // driving the client API can begin try { // Create an instance of this class SampleAsyncWait sampleClient = new SampleAsyncWait(url, clientId, cleanSession, quietMode, userName, password); // Perform the specified action if (action.equals("publish")) { sampleClient.publish(topic, qos, message.getBytes()); } else if (action.equals("subscribe")) { sampleClient.subscribe(topic, qos); } } catch (MqttException me) { // Display full details of any exception that occurs System.out.println("reason " + me.getReasonCode()); System.out.println("msg " + me.getMessage()); System.out.println("loc " + me.getLocalizedMessage()); System.out.println("cause " + me.getCause()); System.out.println("excep " + me); me.printStackTrace(); } }
public void publish(String publishClientId, String publishTopic, byte[] payload) throws DeviceControllerException { if (mqttEnabled) { MqttClient client; MqttConnectOptions options; if (publishClientId.length() > 24) { String errorString = "No of characters '" + publishClientId.length() + "' for ClientID: '" + publishClientId + "' is invalid (should be less than 24, hence please provide a " + "simple " + "'owner' tag)"; log.error(errorString); throw new DeviceControllerException(errorString); } else { log.info( "No of Characters " + publishClientId.length() + " for ClientID : '" + publishClientId + "' is acceptable"); } try { client = new MqttClient(mqttEndpoint, publishClientId); options = new MqttConnectOptions(); options.setWill("device/clienterrors", "crashed".getBytes(UTF_8), 2, true); client.setCallback(this); client.connect(options); client.publish(publishTopic, payload, 0, true); if (log.isDebugEnabled()) { log.debug( "MQTT Client successfully published to topic: " + publishTopic + ", with payload - " + payload); } client.disconnect(); } catch (MqttException ex) { String errorMsg = "MQTT Client Error" + "\n\tReason: " + ex.getReasonCode() + "\n\tMessage: " + ex.getMessage() + "\n\tLocalMsg: " + ex.getLocalizedMessage() + "\n\tCause: " + ex.getCause() + "\n\tException: " + ex; log.error(errorMsg, ex); throw new DeviceControllerException(errorMsg, ex); } } else { log.warn("MQTT <Enabled> set to false in 'device-mgt-config.xml'"); } }