+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
>
>

Reply via email to