Vova, Are we notifying listeners that a message has been sent? I thought that you were talking about reply notifications.
D. On Fri, Oct 16, 2015 at 2:13 AM, Vladimir Ozerov <[email protected]> wrote: > Dima, > > If user call IgniteMessaging.send() in the thread T1, then local message > listeners on this topic will be notified in the same thread before > returning from send() method. This our pseudo-code: > > IgniteMessaging.send(Object topic, Object msg) { > ... > sendToRemoteNodes(topic, msg); > ... > for (Listener lsnr : localTopicListeners) > lsnr.notify(msg); > } > > If user produces a burst of messages in a single thread, he will be very > surprised that remote node process them concurrently and utilize all CPUs, > while local node use only 1 core for this. > > Vladimir. > > On Fri, Oct 16, 2015 at 11:01 AM, Dmitriy Setrakyan <[email protected] > > > wrote: > > > On Thu, Oct 15, 2015 at 11:00 PM, Vladimir Ozerov <[email protected]> > > wrote: > > > > > Sorry, not very clear. "same" means the same thread that sent a > message. > > > This way if we have a listener and a single thread generating messages > > > locally, only one CPU core will be utilizied. > > > > > > > Still confused. How can the thread that send a message be notified in a > > listener about anything? Are you talking about synchronous > > request-response? In this case it is probably done on purpose. > > > > I am still not sure what the problem is. > > > > > > > > > > On Fri, Oct 16, 2015 at 3:49 AM, Dmitriy Setrakyan < > > [email protected]> > > > wrote: > > > > > > > On Thu, Oct 15, 2015 at 9:59 AM, Vladimir Ozerov < > [email protected] > > > > > > > wrote: > > > > > > > > > Folks, > > > > > > > > > > It looks like the problem is deeper and is not limited to futures. > It > > > > > relates to any user code. For example: > > > > > > > > > > 1) Register either local or remote message listener: > > > > > Ignite.message().localListen("myTopic", myLsnr); > > > > > > > > > > 2) Send a message to the topic from the same node: > > > > > Ignite.message().send("myTopic", "Hello world!"); > > > > > > > > > > As a result, listener will be invoked synchronously from the same > > > thread. > > > > > It means we cannot utilize resources efficiently in case of local > > > > message. > > > > > > > > > > > > > I am a bit confused. Which thread is the "same" thread? Do you mean > the > > > > thread that does the listener notification? In that case, I can say > > that > > > I > > > > have performed various benchmarks in the past, and this is the most > > > > performant way, assuming that the listener logic can execute > relatively > > > > fast and does not block the calling thread. > > > > > > > > > >
