Hi guys,
so as outlined in previous thread [1], I have prototyped a JMS batching approach for push message delivery.
We've discussed the approach with Matthias, Mirek Novak and Ondrej Chaloupka (EAP QE & JMS/JTA experts, thank you guys!) and these documents describes a concept that we have came with:
Implementation-wise, I've so far prototyped the messaging part (split SenderService functionality to two subsequent queues with MDBs as shown on diagram),
but that's just a start, since we must configure it appropriately for efficiency (queue configuration and batch sizes) and verify that configuration works as expected,
Off course, you can play with it already. :-)
Apart from the new requirement of using Java EE full profile (JMS), the prototype leverages implementation-specific configurations and APIs:
- org.hibernate.Query for token streaming / batch fetching
- HornetQ configurations of queue size, blocking behavior and message de-duplication
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't work properly.
Once configured and functionally tested (that can even wait for Beta2 I guess),
we can cooperate with Mobile QE on testing (Stefan, Adam), their test suite contains mocks of APNS/GCM against which we can load test.
Cheers!
~ Lukas