public void messageArrived(String topic, MqttMessage message) throws Exception { System.out.println("Message Arrived on topic " + topic); SparkplugBPayloadDecoder decoder = new SparkplugBPayloadDecoder(); SparkplugBPayload inboundPayload = decoder.buildFromByteArray(message.getPayload()); // Debug for (Metric metric : inboundPayload.getMetrics()) { System.out.println("Metric " + metric.getName() + "=" + metric.getValue()); } String[] splitTopic = topic.split("/"); if (splitTopic[0].equals(NAMESPACE) && splitTopic[1].equals(groupId) && splitTopic[2].equals("NCMD") && splitTopic[3].equals(edgeNode)) { for (Metric metric : inboundPayload.getMetrics()) { if ("Node Control/Rebirth".equals(metric.getName()) && ((Boolean)metric.getValue())) { publishBirth(); } else { System.out.println("Unknown Node Command NCMD: " + metric.getName()); } } } }
for (Metric metric : inboundPayload.getMetrics()) { System.out.println("Metric " + metric.getName() + "=" + metric.getValue()); if (splitTopic[0].equals(NAMESPACE) && splitTopic[1].equals(groupId) && splitTopic[2].equals("NCMD") && splitTopic[3].equals(edgeNode)) { for (Metric metric : inboundPayload.getMetrics()) { if ("Node Control/Rebirth".equals(metric.getName()) && ((Boolean) metric.getValue())) { publishBirth(); for (Metric metric : inboundPayload.getMetrics()) {
for (Metric metric : inboundPayload.getMetrics()) { System.out.println("Metric " + metric.getName() + "=" + metric.getValue()); splitTopic[2].equals("NCMD") && splitTopic[3].equals(edgeNode)) { for (Metric metric : inboundPayload.getMetrics()) { if ("Node Control/Rebirth".equals(metric.getName()) && ((Boolean)metric.getValue())) { publishBirth(); newUUID(), null); for (Metric metric : inboundPayload.getMetrics()) { String name = metric.getName(); Object value = metric.getValue();
CompressionConfig config = new CompressionConfig(); byte[] decompressedBytes; List<Metric> metrics = payload.getMetrics();
private static void divideAndAddMessages(Collection<Message> messages, Message message, int maxBytes) throws SparkplugException, JsonProcessingException { Topic topic = message.getTopic(); SparkplugBPayload payload = message.getPayload(); List<Metric> metrics = payload.getMetrics(); final int metricCount = message.getPayload().getMetricCount(); final int size = toJsonString(message).getBytes().length; // Check if the message can be divided if (metricCount <= 1) { throw new SparkplugException("Cannot divide SparkplugBPayload with only " + metricCount + " metric(s)"); } int newMessageCount = size / maxBytes + ((size % maxBytes > 0) ? 1 : 0); int metricsPerMessageCount = metricCount / newMessageCount + ((metricCount % newMessageCount > 0) ? 1 : 0); int index = 0; while (index < metricCount) { int toIndex = metricCount < (index + metricsPerMessageCount) ? metricCount : index + metricsPerMessageCount; // build a new Message with the payload containing the next subset (count) of metrics Message newMessage = new MessageBuilder(topic, new SparkplugBPayloadBuilder().setTimestamp(payload.getTimestamp()).setUuid(payload.getUuid()) .setSeq(payload.getSeq()).addMetrics(new ArrayList<Metric>(metrics.subList(index, toIndex))) .createPayload()).build(); String jsonMessage = toJsonString(newMessage); if (jsonMessage.getBytes().length < maxBytes) { messages.add(newMessage); } else { divideAndAddMessages(messages, newMessage, maxBytes); } index += metricsPerMessageCount; } }
for (Metric metric : payload.getMetrics()) { try { protoMsg.addMetrics(convertMetric(metric));
for (Metric metric : inboundPayload.getMetrics()) { System.out.println("Metric: " + metric.getName() + " :: " + metric.getValue()); for (Metric metric : inboundPayload.getMetrics()) { System.out.println("Metric: " + metric.getName() + " :: " + metric.getValue());