[aerogear-dev] GCM Topics - split into two sender implementations?

Lukáš Fryč lukas at fryc.eu
Wed Aug 12 09:22:05 EDT 2015


Hi guys,

/wrt the GCM Topics support PR
https://github.com/aerogear/aerogear-unifiedpush-server/pull/626

me and summersp have discussed how JMS should be used to route messages.


Current implementation loads tokens and conditionally sends either message
with registration IDs or topics.

There are two things yet to be solved:

   -  topics can be used up to 1 million registrations, otherwise you have
   to fall back to enumerating registration IDs
   - implementation with one sender (GCMPushNotificationSender) is
   suboptimal
      - the utilization of the topics can be increased by prioritizing
      topic message sending first (covering multiple, potentially thousands
      registrations)
      - followed by sending registration IDs out


That's why I suggested to split implementation to two JMS queues talking to
two sender impls (e.g. GCMTopicSender and GCMRegistrationIdsSender).

   - first we send out topic based messages (for efficiency)
   - we collect those topics that fail and resend them for processing as
   registration IDs (fail over)
      - registration ids sending can start in parallel, but it can't end
      until we sent out all topics

Additionally we get an ability to configure these two message routes
individually on the JMS level (better utilization, transact-ability, fail
over).


What do you think?


Cheers,

~ Lukas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/aerogear-dev/attachments/20150812/b49c0871/attachment.html 


More information about the aerogear-dev mailing list