2016-06-19 9 views
0

Ich bin neu mit MQTT und ich habe das Publisher/Subscriber-Beispiel ausgeführt. Ich frage mich, ob ich auch Ereignisse senden kann. Zum Beispiel habe ich eine Soundevent KlasseEreignis über MQTT veröffentlichen

class SoundEvent { 

    private int value; 

    public SoundEvent(int value) { 
     this.value = value; 
    } 

    public int getValue() { 
     return value; 
    } 
} 

Dann eine SoundSensor Klasse (ein Simulations Sensor), die Zufallswerte erzeugt, so dass jedes Mal, wenn ein Wert erzeugt wird, möchte ich als den Wert an die Abonnenten senden (SoundEvent-Wert)

Dann kann der Abonnent etwas mit dem Wert tun, z.

public class Subscriber { 

    public void highTraffic(SoundEvent e) { 
     if (e.value == 10) { 
      System.out.println("High")); 
     } 
    } 
} 

Aber was ich nur in MQTT gesehen habe, MQTT Nachrichten zu senden, ist es möglich, ein Ereignis zu schicken? Oder bin ich mit der ereignisbasierten Idee verwechselt?

Wenn jemand einige Beispiele gibt, die sehr nützlich sein wird

Danke im Voraus

Antwort

1

MQTT verwendet werden kann, etwas zu veröffentlichen Sie als ein Array von Bytes kodieren kann.

Im Fall des SoundEvent haben Sie beschrieben, dass dies nur ein Wrapper um einen Integer-Wert ist. Sie könnten einfach die Ganzzahl veröffentlichen und ein neues SoundEvent auf dem Abonnenten mit diesem Wert erstellen. Die andere Option wäre, SoundEvent serialisierbar zu implementieren, das Objekt in ein Byte-Array zu serialisieren und dieses in der MQTT-Nachricht zu senden, wo es am Abonnenten deserialisiert werden kann.

Gegeben, wie einfach SoundEvent ist, würde ich einfach mit dem Senden des Interger-Werts gehen, den es umschließt und die Serialisierung von Objekten für mehr komplette Objekte speichert.

Sie können natürlich die Java-Serialisierung alle zusammen vermissen und erstellen Sie sprachneutrale Darstellungen der Daten im Objekt, z. JSON oder XML und veröffentliche diese, die die Nachrichten leichter kommensurabel machen würden durch Teilnehmer, die nicht in Java

+0

Dankeschön sind! Jetzt verstehe ich, was Sie mit der Serialisierung meinen – andreahg

Verwandte Themen