[cdi-dev] [JBoss JIRA] (CDI-541) Ordering of async observers (vs sync observers) is not specified

Matej Novotny (JIRA) issues at jboss.org
Wed Nov 4 06:35:00 EST 2015


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

Matej Novotny commented on CDI-541:
-----------------------------------

If I get this correctly then setting different @Priority to async observers will result in one observer being notified later than the other (as in the example given above). But there is not really a way to tell that the async observer has finished its work hence I cannot rely on its job being finished (the underlaying data being changed for instance) while the other observer is already executing.

Now the question I have - could you give me a scenario when I would need to have one observer notified later than the other while still not caring about the data they handle (not relying on when they are done executing)? And I mean a scenario which wouldn't end all the same when using async observers without @Priority.

Obviously, there might be some but I just cannot see any atm so feel free to enlighten me :)

> Ordering of async observers (vs sync observers) is not specified
> ----------------------------------------------------------------
>
>                 Key: CDI-541
>                 URL: https://issues.jboss.org/browse/CDI-541
>             Project: CDI Specification Issues
>          Issue Type: Feature Request
>          Components: Events
>    Affects Versions: 2.0-EDR1
>            Reporter: Tomas Remes
>            Priority: Major
>             Fix For: 2.0-EDR2
>
>
> I think this needs to be specified. E.g. what happens if I fire async event and have more matching sync and async observers? Are all sync observes called first in given order with no regard to async observers priority? 
> For example:
> {{event.fireAsync(new Message());}}
> {code}
> public class First {
>   
>    void observeMessage(@Observes @Priority(2000) Message message){} 
> }
> {code}
> {code}
> public class Second {
>   
>    void observeMessage(@ObservesAsync @Priority(2100) Message message){} 
> }
> {code}
> {code}
> public class Third {
>   
>    void observeMessage(@Observes @Priority(2200) Message message){} 
> }
> {code}
> {code}
> public class Fourth {
>   
>    void observeMessage(@ObservesAsync @Priority(2300) Message message){} 
> }
> {code}
> What will be the order in this case? First, Third, Second, Fourth?



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the cdi-dev mailing list