Я пытаюсь определить свою структуру MQTT пакета через Protobuf я внедрено следующий код опубликовать сообщение с помощью Protobufкак установить формат Protobuf в протоколе MQTT
Код:
package com.cupola.demo;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
public class Publish {
public static void main(String[] args) {
Sample sas = new Sample();
String topic = "Cupola";
String content = sas.passMessage(24,"Noor");
int qos = 2;
String broker = "tcp://localhost:1883";
String clientId = "DemoPublish";
MemoryPersistence persistence = new MemoryPersistence();
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: " + content);
MqttMessage message = new MqttMessage(content.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();
}
}
}
Вот заданные значения путем вызова функции от издателя и установки значений в соответствии с прото-файлом
package com.cupola.demo;
import com.cupola.demo.CatProto.Cat;
public class Sample {
public String passMessage(int age,String name) {
// creating the cat
Cat noor= CatProto.Cat.newBuilder()
.setAge(age)
.setName(name)
.build();
String message=noor.toString();
return message;
}
}
Это мой Cat.proto файл:
option java_outer_classname="CatProto";
message Cat {
optional int32 age = 1;
required string name = 2;
}
это правильно или мне нужно изменить путь. Пожалуйста, предложите мне. Благодарю вас.
Какая проблема вы на самом деле видите здесь? – hardillb
Я хочу заполнить атрибуты пакета mqtt и формат сообщения должен быть определен protobuf. Таким образом, упомянутый выше код - это нормально для моего требования, или мне нужно модифицировать больше. Спасибо за быстрый ответ – Noor
С помощью этой библиотеки java protobuffer вы используете? – hardillb