<div dir="ltr">Hi guys,<div><br></div><div>so as outlined in previous thread [1], I have prototyped a JMS batching approach for push message delivery.</div><div><br></div><div><br></div><div><br></div><div><br></div><div>We&#39;ve discussed the approach with Matthias, Mirek Novak and Ondrej Chaloupka (EAP QE &amp; JMS/JTA experts, thank you guys!) and these documents describes a concept that we have came with:</div><div><br></div><div>Diagram: <a href="https://docs.google.com/a/fryc.eu/drawings/d/13IsJWPSJNYXtst-UVxQYmzH36C_EXQMYYr_jcu7nFmE/edit?usp=sharing">https://docs.google.com/a/fryc.eu/drawings/d/13IsJWPSJNYXtst-UVxQYmzH36C_EXQMYYr_jcu7nFmE/edit?usp=sharing</a></div><div><br></div><div>Text Doc: <a href="https://docs.google.com/document/d/1X65P_U9O62Z5JZhKi9ZvBuZU1OrL4pNHNddlzJK6rMg/edit?usp=sharing">https://docs.google.com/document/d/1X65P_U9O62Z5JZhKi9ZvBuZU1OrL4pNHNddlzJK6rMg/edit?usp=sharing</a></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div>Implementation-wise, I&#39;ve so far prototyped the messaging part (split SenderService functionality to two subsequent queues with MDBs as shown on diagram),</div><div><br></div><div>but that&#39;s just a start, since we must configure it appropriately for efficiency (queue configuration and batch sizes) and verify that configuration works as expected,</div><div><br></div><div>the prototype lives on a branch (unpolished, to be squashed later): <a href="https://github.com/lfryc/aerogear-unifiedpush-server/tree/jms-batching">https://github.com/lfryc/aerogear-unifiedpush-server/tree/jms-batching</a></div><div><br></div><div>Off course, you can play with it already. :-)</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div>Apart from the new requirement of using Java EE full profile (JMS), the prototype leverages implementation-specific configurations and APIs:</div><div><ul><li>org.hibernate.Query for token streaming / batch fetching</li><li>HornetQ configurations of queue size, blocking behavior and message de-duplication</li></ul><div>That pretty much binds us to WildFly/EAP - we can tweak it to run on any compliant app server, but without specific configurations it won&#39;t work properly.</div></div><div><br></div><div><br></div><div><br></div><div>Once configured and functionally tested (that can even wait for Beta2 I guess),</div><div><br></div><div>we can cooperate with Mobile QE on testing (Stefan, Adam), their test suite contains mocks of APNS/GCM against which we can load test.</div><div><br></div><div><br></div><div><br></div><div>Cheers!</div><div><br></div><div>~ Lukas</div><div><br></div><div><br></div><div>[1] <a href="http://aerogear-dev.1069024.n5.nabble.com/aerogear-dev-UnifiedPush-new-requirement-JMS-Java-EE-Full-profile-tp11268.html">http://aerogear-dev.1069024.n5.nabble.com/aerogear-dev-UnifiedPush-new-requirement-JMS-Java-EE-Full-profile-tp11268.html</a></div></div>