[cdi-dev] [JBoss JIRA] (CDI-650) Introduce asynchronous event notification options

Martin Kouba (JIRA) issues at jboss.org
Wed Nov 23 10:40:00 EST 2016

    [ https://issues.jboss.org/browse/CDI-650?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13327243#comment-13327243 ] 

Martin Kouba commented on CDI-650:

This info is not intended for observer methods (receiver part). This is merely a hint for the container, i.e. allows the event "emitter" to configure async events delivery. And right now, the only portable option is the {{Executor}} used for observer method execution.

A user can either use the convenient static methods ({{NotificationOptions.ofExecutor()}}, {{NotificationOptions.builder()}}) and the default impl or provide a custom impl.

> Introduce asynchronous event notification options
> -------------------------------------------------
>                 Key: CDI-650
>                 URL: https://issues.jboss.org/browse/CDI-650
>             Project: CDI Specification Issues
>          Issue Type: Feature Request
>            Reporter: Martin Kouba
>            Assignee: Martin Kouba
>             Fix For: 2.0 .Final
> Currently, it's only possible to provide a custom executor when firing an event asynchronously - see also {{javax.enterprise.event.Event.fireAsync(U, Executor)}}. It might be useful to provide other implementation-specific options, e.g. notification timeout.
> Therefore, I suggest to introduce {{NotificationOptions}} interface:
> {code:java}
> public interface NotificationOptions {
>     Executor getExecutor();
>     // Implementation-specific options
>     Object get(String optionName);
> }
> {code}
> and change the method signature to:
> {code:java}
> <U extends T> CompletionStage<U>  fireAsync(U event, NotificationOptions options);
> {code}
> In the future, if any implementation-specific configuration proves to be useful and worth standardizing, we may simply add a new method to {{NotificationOptions}}, e.g. 
> {code:java}
> Duration getTimeout();
> {code}
> instead of adding more and more params to {{Event.fireAsync()}}.
> We could also introduce some convenient static methods on {{NotificationOptions}}, e.g.:
> {code:java}
> void fireEvents(Event event, Executor executor) {
>     event.fireAsync(new Foo(), NotificationOptions.ofExecutor(executor));
> }
> {code}

This message was sent by Atlassian JIRA

More information about the cdi-dev mailing list