通过MQTT发布事件

时间:2016-06-19 11:16:47

标签: events mqtt

我是使用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消息,是否可以发送事件?还是我对基于事件的想法感到困惑?

如果某人有一些例子,那将是非常有用的

提前谢谢

1 个答案:

答案 0 :(得分:1)

MQTT可用于发布任何可以编码为字节数组的内容。

对于SoundEvent,你已经描述过这只是一个围绕Integer值的包装器,你可以发布整数并在Subscriber上用这个值创建一个新的SoundEvent。

另一个选项是使SoundEvent实现Serializable,将对象序列化为字节数组,并在MQTT消息中发送它,然后在订阅者处对其进行反序列化。

鉴于SoundEvent是多么简单,我只需发送它包装的Interger值并保存对象的序列化以获得更多的文本。

您当然可以错过Java序列化,并创建对象中数据的语言中性表示,例如JSON或XML并发布这些内容,这些内容可以使未在Java中实现的订阅者更容易理解消息