我是使用MQTT的新手,我运行了Publisher / Subscriber示例。我想知道我是否也可以发送活动。例如,我有一个SoundEvent类
class SoundEvent {
private int value;
public SoundEvent(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
然后是SoundSensor类(模拟传感器),它生成随机值,所以每次生成一个值时,我都希望将值作为(SoundEvent值)发送到订阅者
然后订阅者可以使用该值执行某些操作,例如
public class Subscriber {
public void highTraffic(SoundEvent e) {
if (e.value == 10) {
System.out.println("High"));
}
}
}
但是我在MQTT中看到的只是发送MQTT消息,是否可以发送事件?还是我对基于事件的想法感到困惑?
如果某人有一些例子,那将是非常有用的
提前谢谢
答案 0 :(得分:1)
MQTT可用于发布任何可以编码为字节数组的内容。
对于SoundEvent,你已经描述过这只是一个围绕Integer值的包装器,你可以发布整数并在Subscriber上用这个值创建一个新的SoundEvent。
另一个选项是使SoundEvent实现Serializable,将对象序列化为字节数组,并在MQTT消息中发送它,然后在订阅者处对其进行反序列化。
鉴于SoundEvent是多么简单,我只需发送它包装的Interger值并保存对象的序列化以获得更多的文本。
您当然可以错过Java序列化,并创建对象中数据的语言中性表示,例如JSON或XML并发布这些内容,这些内容可以使未在Java中实现的订阅者更容易理解消息