From f6f3d6a20bdf506d86d5e66aafe94c2b5db29816 Mon Sep 17 00:00:00 2001 From: Jens Reimann Date: Thu, 4 Apr 2019 12:07:55 +0200 Subject: [PATCH] Provider information about the amount of payload received --- .../hono/simulator/consumer/Application.java | 4 +++- .../hono/simulator/consumer/Consumer.java | 23 +++++++++++++++---- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/simulator-consumer/src/main/java/de/dentrassi/hono/simulator/consumer/Application.java b/simulator-consumer/src/main/java/de/dentrassi/hono/simulator/consumer/Application.java index 3ae572e..30024b3 100644 --- a/simulator-consumer/src/main/java/de/dentrassi/hono/simulator/consumer/Application.java +++ b/simulator-consumer/src/main/java/de/dentrassi/hono/simulator/consumer/Application.java @@ -140,7 +140,9 @@ public Application(final String tenant, final String host, final int port, final .of("tenant", this.tenant) .and(type.asTag()); - this.consumer = new Consumer(this.runtime.getRegistry().counter("messages.received", commonTags)); + this.consumer = new Consumer( + this.runtime.getRegistry().counter("messages.received", commonTags), + this.runtime.getRegistry().counter("payload.received", commonTags)); } diff --git a/simulator-consumer/src/main/java/de/dentrassi/hono/simulator/consumer/Consumer.java b/simulator-consumer/src/main/java/de/dentrassi/hono/simulator/consumer/Consumer.java index c8d5698..12dc292 100644 --- a/simulator-consumer/src/main/java/de/dentrassi/hono/simulator/consumer/Consumer.java +++ b/simulator-consumer/src/main/java/de/dentrassi/hono/simulator/consumer/Consumer.java @@ -11,22 +11,35 @@ package de.dentrassi.hono.simulator.consumer; +import org.apache.qpid.proton.amqp.Binary; +import org.apache.qpid.proton.amqp.messaging.Data; +import org.apache.qpid.proton.amqp.messaging.Section; import org.apache.qpid.proton.message.Message; import io.micrometer.core.instrument.Counter; public class Consumer { - private final Counter counter; + private final Counter messages; + private final Counter payload; - public Consumer(final Counter counter) { - this.counter = counter; + public Consumer(final Counter messages, final Counter payload) { + this.messages = messages; + this.payload = payload; } public void handleMessage(final Message msg) { - this.counter.increment(); + this.messages.increment(); + + final Section body = msg.getBody(); + if (body instanceof Data) { + final Binary value = ((Data) body).getValue(); + if (value != null) { + this.payload.increment(value.getLength()); + } + } } public double count() { - return counter.count(); + return messages.count(); } }