+1 Duc
Vào Th 2, 9 thg 12, 2019 vào lúc 23:25 Matthieu Baechler < matth...@apache.org> đã viết: > Hi, > > Most of the readers of this mailing list probably know that James has > been using project reactor [1], an implementation of Reactive Streams, > to improve its usage of resources and lower the latency of operations > for some time. > > For a long time, the Mailbox part of James has a Pub/Sub system to > allow for modular extension of James default behavior like learning for > Spam, indexing in ElasticSearch, etc. > > Recenlty, we reworked that Pub/Sub to be able to implement a > distributed version of it by integrating RabbitMQ. > > During this work we wrote an extensive test suite to define the right > contracts a Mailbox Pub/Sub system should support and we reworked the > single-node version (called InVmEventBus) to rely on reactor. > > However, listeners are still not able to make use of reactive streams > because we didn't changed the way listeners work. > > You can either have a synchronous listener: it means that for a given > event, the delivery method call with return only when all listeners got > called (or an error occured) or an asynchronous listener, which > basically means we won't wait for the listener return to go ahead. > > When a listener does some IO, like for example ElasticSearch indexer, > we don't leverage the fact that IO are asynchronous and thus we block > threads waiting for the IO. > > Given everything is reactor based, it would be a much better use of > resources to let the listeners work with `Publisher` type and use non- > block APIs. > > We could probably provide an adapter API to allow non-reactive > listeners to use the traditional API and wrapping listener calls into > some reactive types. > > What would you think about this change? Feedback is more than welcome. > > Cheers, > > > [1] https://projectreactor.io > > > -- > Matthieu Baechler > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org > For additional commands, e-mail: server-dev-h...@james.apache.org > >