Hi folks,

I’m currently working hard on implementing a SparkplugB PayloadFormatter that 
would allow us to directly consume a SparkplugB mqtt stream.

However have I noticed two things:

  1.  The current PayloadFormatter interface, doesn’t pass the topic to the 
format method (in Sparkplug the device Id is located in that)
  2.  The current config option enable_mqtt_service does two things
     *   It starts a local MQTT broker
     *   It registers as client to the MQTT broker configured in the settings

I worked around the Problem in 1) by Adding a PayloadFormatterV2 interface 
which extends the PayloadFormatter, that adds one method:

List<Message> format(String topic, ByteBuf payload);

Then I extended the MPPPublishHandler to check if the handler instance 
implements V2 or not.
If it’s a V2 it calls the new method and passes the topic along, if not, it 
uses the old one. This way no compatability problems should occur.

However I would never use a broker like the moquette broker in a large scale 
production environment. Here I’d probably go for HiveMQ or alike.
Unfortunetely we currently can’t enable the MQTT consumer stuff without 
starting the broker.

I think we need 2 settings here.

Chris

Reply via email to