Re: [jgroups-users] Scope implementation for JGroups 4
Questions/problems related to using JGroups <[email protected]> Thu, 20 Jul 2017 11:41:56 +0200
| Newsgroups | gmane.comp.java.javagroups.general |
|---|---|
| Message-ID | <mailman.33235.1500543723.24383.javagroups-users@lists.sourceforge.net> |
I forgot to add: if you don't need ordered delivery, you could also deliver *all* messages fora given sessions in parallel. This is the same as using the OOB flag: you'd still have the guarantees that each message is delivery one and only once. On 20/07/17 11:33, Questions/problems related to using JGroups wrote: > > > On 20/07/17 10:19, Questions/problems related to using JGroups wrote: >> The scope protocol has been removed from the stack in version 4. >> Alternatively the application can now use AsynchronousInvocation with >> RequestHandler and an application thread pool. However, with the scope >> protocol one can take advantage of parallelism (among different >> scopes) with >> sequential guarantee within a scope. How can the same be achieved via >> async >> dispatching? > > Messages are still guaranteed to be delivered in send-order (and > once-and-only-once, no duplicates). > > Let's take the example of web sessions (X, Y and Z) from the manual and > say sender P sends 10 messages: P1-4 (session X), 5-6 (Y) and 7-10 (Z). > > The messages from the same session need to be delivered in order, e.g. > P4 after P3, but messages P1-4 can be delivered in parallel to P5-6 and > P7-10. > > Since all messages come from the *same sender P*, your handle() callback > will be invoked with P1 first, then P2 ... P10: the ordering is > guaranteed to be FIFO for P. > > If you for example have queues for each web session and add an incoming > message to the corresponding queue, the messages in each queue are > ordered correctly, e.g. X: |P1 P2 P3 P4|, Y: |P5 P6| Z: |P7 P8 P9 P10| > > If you allocate a thread for each session (or perhaps, better, a thread > pool), then the thread for session Z needs to dequeue messages from Z's > queue and deliver them to the application one-by-one; this guarantees > sequential delivery of messages within the same session, but parallel > delivery between different sessions. > >> The 'Message' structure and the RequestOptions used in RPCs do >> not include get and set scope methods. > > Right, you need to add a 'scope' yourself, e.g. by using a part of the > payload (the message's buffer), or - better - by adding an application > header to each message. > >> Although the scope protocol and its >> relevant thread-pools are now removed, retaining the scope variable in >> request options and 'Message' structure will help in achieving the same >> using an application thread-pool. >> >> >> >> -- >> View this message in context: >> http://jgroups.1086181.n5.nabble.com/Scope-implementation-for-JGroups-4-tp11353.html >> >> Sent from the JGroups - General mailing list archive at Nabble.com. >> >> ------------------------------------------------------------------------------ >> >> Check out the vibrant tech community on one of the world's most >> engaging tech sites, Slashdot.org! http://sdm.link/slashdot >> _______________________________________________ >> javagroups-users mailing list >> [email protected] >> https://lists.sourceforge.net/lists/listinfo/javagroups-users >> > -- Bela Ban | http://www.jgroups.org ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot