<div dir="ltr">right!<div><br></div><div>in theory, you can also simply register a custom kafka consumer to those topics and apply some custom logic, e.g. to ping other systems</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, May 16, 2017 at 6:50 PM, Mads Møller <span dir="ltr">&lt;<a href="mailto:mm@napp.dk" target="_blank">mm@napp.dk</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">







<div bgcolor="white" lang="EN-GB" link="blue" vlink="purple">
<div class="m_-4310323524613086204WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Georgia;color:black">Such great news.
<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Georgia;color:black"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Georgia;color:black">It would be fantastic if failing APN connection or similar would fire off a webhook. So its possible for integrated systems can be notified.
<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Georgia;color:black"><u></u> <u></u></span></p>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Georgia;color:black"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Georgia;color:black"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Georgia;color:black">BEST REGARDS<u></u><u></u></span></p>
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:Georgia;color:black">__________________</span></b><span style="font-size:11.0pt;font-family:Georgia;color:black"><u></u><u></u></span></p>
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:Georgia;color:black">MADS MØLLER</span></b><span style="font-size:11.0pt;font-family:Georgia;color:black"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Georgia;color:black">CTO, PARTNER<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Georgia;color:black">    <u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Georgia;color:black">Napp A/S <u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Georgia;color:black">T: <a href="tel:+45%2042%2042%2080%2060" value="+4542428060" target="_blank">+45 42 42 80 60</a><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Georgia;color:black">M: <a href="tel:+45%2020%2028%2020%2026" value="+4520282026" target="_blank">+45 20 28 20 26</a><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Georgia;color:black">E:
<a href="mailto:mm@napp.dk" target="_blank"><span style="color:#0563c1">mm@napp.dk</span></a><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Georgia;color:black">W: <a href="https://napp.dk/" target="_blank"><span style="color:#0563c1">https://napp.dk</span></a><u></u><u></u></span></p>
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:Georgia;color:black">__________________</span></b><span style="font-size:11.0pt;font-family:Georgia;color:black"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"><u></u> <u></u></span></p>
</div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Georgia;color:black"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Georgia;color:black"><u></u> <u></u></span></p>
<div style="border:none;border-top:solid #b5c4df 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span style="font-family:Calibri;color:black">From: </span>
</b><span style="font-family:Calibri;color:black">&lt;<a href="mailto:aerogear-dev-bounces@lists.jboss.org" target="_blank">aerogear-dev-bounces@lists.<wbr>jboss.org</a>&gt; on behalf of Matthias Wessendorf &lt;<a href="mailto:matzew@apache.org" target="_blank">matzew@apache.org</a>&gt;<br>
<b>Reply-To: </b>AeroGear Developer Mailing List &lt;<a href="mailto:aerogear-dev@lists.jboss.org" target="_blank">aerogear-dev@lists.jboss.org</a>&gt;<br>
<b>Date: </b>Tuesday, 16 May 2017 at 16.50<br>
<b>To: </b>AeroGear Developer Mailing List &lt;<a href="mailto:aerogear-dev@lists.jboss.org" target="_blank">aerogear-dev@lists.jboss.org</a>&gt;<br>
<b>Subject: </b>Re: [aerogear-dev] Notification Delivery metrics and processing with Kafka<u></u><u></u></span></p>
</div><div><div class="h5">
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Oh, this is far from being done :-) <u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">I just did a little POC, and since we also have two GSoC students, we have some time to define the behavior, including UI, here on the commiunity :) <u></u><u></u></p>
</div>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<p class="MsoNormal">On Tue, May 16, 2017 at 3:37 PM, Jose Miguel Gallas Olmedo &lt;<a href="mailto:jgallaso@redhat.com" target="_blank">jgallaso@redhat.com</a>&gt; wrote:<u></u><u></u></p>
<blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<div>
<p class="MsoNormal"><span style="font-family:Arial">Great news!!<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:Arial"><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:Arial">Will this information be displayed in the UI? As a tooltip or when extending the row in &quot;activity log&quot;s table.<u></u><u></u></span></p>
</div>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<div>
<p class="MsoNormal">On 16 May 2017 at 13:58, Matthias Wessendorf &lt;<a href="mailto:matzew@apache.org" target="_blank">matzew@apache.org</a>&gt; wrote:<u></u><u></u></p>
</div>
</div>
<blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<div>
<div>
<p style="margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;box-sizing:border-box">
<span style="font-family:Helvetica;color:#24292e">Hi,<u></u><u></u></span></p>
<p style="margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;box-sizing:border-box">
<span style="font-family:Helvetica;color:#24292e">with the new APNs HTTP/2 APIs, and our usage of Pushy, we are able to get a way more finegrain knowledge if Apple did accept (for further processing) or reject a messages, on a per device_token level!<u></u><u></u></span></p>
<p style="margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;box-sizing:border-box">
<span style="font-family:Helvetica;color:#24292e">For instance, if we have a push with 5000 targeted devices, we are now able to say that 5 tokens, for instances failed, but APNs was happy to accept push request for the other 4995 devices (Note: this does NOT
 mean they actually arrive at the device, just that apple accepted them for further processing).<u></u><u></u></span></p>
<p style="margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;box-sizing:border-box">
<span style="font-family:Helvetica;color:#24292e">Now, this, for APNs, gives us much more flexiblity handling our metrics!<u></u><u></u></span></p>
<p style="margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;box-sizing:border-box">
<span style="font-family:Helvetica;color:#24292e">In our code, here, we do read <em><span style="font-family:Helvetica">each</span></em> token request from APNs in here: <a href="https://github.com/aerogear/aerogear-unifiedpush-server/blob/20831d96196663349c96da6b5fe11aef65cacf59/push/sender/src/main/java/org/jboss/aerogear/unifiedpush/message/sender/apns/PushyApnsSender.java#L130-L147" target="_blank"><span style="color:#0366d6">https://github.com/<wbr>aerogear/aerogear-unifiedpush-<wbr>server/blob/<wbr>20831d96196663349c96da6b5fe11a<wbr>ef65cacf59/push/sender/src/<wbr>main/java/org/jboss/aerogear/<wbr>unifiedpush/message/sender/<wbr>apns/PushyApnsSender.java#<wbr>L130-L147</span></a><u></u><u></u></span></p>
<p style="margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;box-sizing:border-box">
<span style="font-family:Helvetica;color:#24292e">So here, we could simply send the result, on a per token base, to a (Kafka) topic, like:<u></u><u></u></span></p>
<pre style="background:#f6f8fa;box-sizing:border-box;font-stretch:normal;word-wrap:normal;border-radius:3px;overflow:auto"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm">...<u></u><u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm">if (pushNotificationResponse.<wbr>isAccepted()) {<u></u><u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm">  logger.trace(&quot;Push notification for &#39;{}&#39; (payload={})&quot;, deviceToken, pushNotificationResponse.<wbr>getPushNotification().<wbr>getPayload());<u></u><u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm"><u></u> <u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm">  producer.send(jobID, &quot;Success&quot;); // sends to &quot;push_messages&quot; topic<u></u><u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm">} else {<u></u><u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm">  final String rejectReason = pushNotificationResponse.<wbr>getRejectionReason();<u></u><u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm">  logger.trace(&quot;Push Message has been rejected with reason: {}&quot;, rejectReason);<u></u><u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm"><u></u> <u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm">  producer.send(jobID, &quot;Rejected&quot;); // sends &quot;push_messages&quot; topic<u></u><u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm">...<u></u><u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm">}<u></u><u></u></span></code></pre>
<p style="margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;box-sizing:border-box">
<span style="font-family:Helvetica;color:#24292e">Now, this sends all to one topic, and we could be using, somewhere, Kafka Stream API, to perform some processing of the source, and calculate some stats on that, like:<u></u><u></u></span></p>
<pre style="background:#f6f8fa;box-sizing:border-box;font-stretch:normal;word-wrap:normal;border-radius:3px;overflow:auto"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm">KStreamBuilder builder = new KStreamBuilder();<u></u><u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm"><u></u> <u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm">// read from the topic that contains all messages, for all jobs<u></u><u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm">final KStream&lt;String, String&gt; source = builder.stream(&quot;push_messages&quot;<wbr>);<u></u><u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm"><u></u> <u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm"><u></u> <u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm">// some simple processing, and grouping by key, applying a predicate and send to three &quot;analytic&quot; topic:<u></u><u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm"><u></u> <u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm">final KTable&lt;String, Long&gt; successCountsPerJob = source.filter((key, value) -&gt; value.equals(&quot;Success&quot;))<u></u><u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm">  .groupByKey()<u></u><u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm">  .count(&quot;successMessagesPerJob&quot;<wbr>);<u></u><u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm">successCountsPerJob.to(Serdes.<wbr>String(), Serdes.Long(), &quot;successMessagesPerJob&quot;);<u></u><u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm"><u></u> <u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm">final KTable&lt;String, Long&gt; failCountsPerJob = source.filter((key, value) -&gt; value.equals(&quot;Rejected&quot;))<u></u><u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm">  .groupByKey()<u></u><u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm">  .count(&quot;failedMessagesPerJob&quot;)<wbr>;<u></u><u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm">failCountsPerJob.to(Serdes.<wbr>String(), Serdes.Long(), &quot;failedMessagesPerJob&quot;);<u></u><u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm"><u></u> <u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm">source.groupByKey()<u></u><u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm">  count(&quot;totalMessagesPerJob&quot;)<u></u><u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm">    .to(Serdes.String(), Serdes.Long(), &quot;totalMessagesPerJob&quot;);<u></u><u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm"><u></u> <u></u></span></code></pre>
<p style="margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;box-sizing:border-box">
<span style="font-family:Helvetica;color:#24292e">The above performs some functional processing of the single source of truth, based on different assumptions.<u></u><u></u></span></p>
<p style="margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;box-sizing:border-box">
<span style="font-family:Helvetica;color:#24292e">If one would have a simple consumer on each of these three &quot;analytic&quot; topics, a simple logging output would be:<u></u><u></u></span></p>
<pre style="background:#f6f8fa;box-sizing:border-box;font-stretch:normal;word-wrap:normal;border-radius:3px;overflow:auto"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm">2017-05-16 13:42:48,763 INFO  successMessagesPerJob: 2 - jobID: XXX<u></u><u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm">2017-05-16 13:42:48,764 INFO  totalMessagesPerJob: 3 - jobID: XXX<u></u><u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm">2017-05-16 13:42:48,764 INFO  failedMessagesPerJob: 1 - jobID: XXX<u></u><u></u></span></code></pre>
<pre style="background:#f6f8fa"><code><span style="font-family:Courier;color:#24292e;border:none windowtext 1.0pt;padding:0cm"><u></u> <u></u></span></code></pre>
<p style="margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;box-sizing:border-box">
<span style="font-family:Helvetica;color:#24292e">since for the GSoC we do have two students, working on Kafka and HBase improvements for UPS, I wanted to share this quick prototype, as food for thoughts.<u></u><u></u></span></p>
<p style="margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;box-sizing:border-box">
<span style="font-family:Helvetica;color:#24292e">Of course, each of these &#39;filtered&#39; consumers could than eventually store the result somewhere else.<u></u><u></u></span></p>
<p style="margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;box-sizing:border-box">
<span style="font-family:Helvetica;color:#24292e">With this approach, Kafka would be come the hub (or data pipeline) for our metrics, with stream processing and different consumers to deal with the results of interest<u></u><u></u></span></p>
<p style="margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;box-sizing:border-box">
<span style="font-family:Helvetica;color:#24292e">Any comments or other thoughts?<u></u><u></u></span></p>
<p style="margin:0cm;margin-bottom:.0001pt;box-sizing:border-box"><span style="font-family:Helvetica;color:#24292e">-Matthias<u></u><u></u></span></p>
<div>
<p class="MsoNormal"><span style="color:#888888"><u></u> <u></u></span></p>
</div>
<p class="MsoNormal"><span class="m_-4310323524613086204m-5438500972606914172hoenzb"><span style="color:#888888">--
</span><u></u><u></u></span></p>
<div>
<div>
<div>
<p class="MsoNormal"><span style="color:#888888">Matthias Wessendorf <br>
<br>
blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.<wbr>wordpress.com/</a><br>
twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a></span><u></u><u></u></p>
</div>
</div>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>
<p class="MsoNormal">______________________________<wbr>_________________<br>
aerogear-dev mailing list<br>
<a href="mailto:aerogear-dev@lists.jboss.org" target="_blank">aerogear-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/<wbr>mailman/listinfo/aerogear-dev</a><u></u><u></u></p>
</blockquote>
</div>
<p class="MsoNormal"><span style="color:#888888"><br>
<br clear="all">
</span><span class="m_-4310323524613086204hoenzb"><span style="color:#888888"><u></u><u></u></span></span></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<p class="MsoNormal"><span class="m_-4310323524613086204hoenzb"><span style="color:#888888">-- </span><u></u><u></u></span></p>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p style="margin:0cm;margin-bottom:.0001pt"><b><span style="font-size:10.5pt;font-family:Helvetica;color:black;text-transform:uppercase">JOSE MIGUEL GALLAS OLMEDO<u></u><u></u></span></b></p>
<p style="margin-right:0cm;margin-bottom:3.0pt;margin-left:0cm">
<span style="font-size:7.5pt;font-family:Helvetica;color:black;text-transform:uppercase">ASSOCIATE QE, mobile<u></u><u></u></span></p>
<p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size:7.5pt;font-family:Helvetica;color:#999999"><a href="https://www.redhat.com/" target="_blank"><span style="color:#0088ce">Red Hat <br>
<br>
</span></a><u></u><u></u></span></p>
<p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size:7.5pt;font-family:Helvetica;color:#999999">M: <a href="http://redhatemailsignature-marketing.itos.redhat.com/" target="_blank"><span style="font-size:8.5pt;color:#0088ce">+34618488633</span></a>  
  <u></u><u></u></span></p>
<table class="m_-4310323524613086204MsoNormalTable" border="0" cellpadding="0">
<tbody>
<tr>
<td style="padding:.75pt .75pt .75pt .75pt">
<p class="MsoNormal"><span style="font-size:13.5pt;font-family:Helvetica;color:black"><a href="https://red.ht/sig" target="_blank"><span style="text-decoration:none"><img border="0" width="90" height="29" id="m_-4310323524613086204_x0000_i1025" src="https://www.redhat.com/profiles/rh/themes/redhatdotcom/img/logo-red-hat-black.png"></span></a><u></u><u></u></span></p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal"><br>
______________________________<wbr>_________________<br>
aerogear-dev mailing list<br>
<a href="mailto:aerogear-dev@lists.jboss.org" target="_blank">aerogear-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/<wbr>mailman/listinfo/aerogear-dev</a><u></u><u></u></p>
</blockquote>
</div>
<p class="MsoNormal"><br>
<br clear="all">
<u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<p class="MsoNormal">-- <u></u><u></u></p>
<div>
<div>
<div>
<p class="MsoNormal">Matthias Wessendorf <br>
<br>
blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.<wbr>wordpress.com/</a><br>
twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a><u></u><u></u></p>
</div>
</div>
</div>
</div>
</div></div></div>
</div>

<br>______________________________<wbr>_________________<br>
aerogear-dev mailing list<br>
<a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/<wbr>mailman/listinfo/aerogear-dev</a><br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div>Matthias Wessendorf <br><br>blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a></div></div></div>
</div>