11package org .reactivecommons .async .impl .config ;
22
3+ import lombok .RequiredArgsConstructor ;
34import org .reactivecommons .async .api .DefaultCommandHandler ;
45import org .reactivecommons .async .api .DefaultQueryHandler ;
56import org .reactivecommons .async .api .DynamicRegistry ;
1213import org .reactivecommons .async .impl .HandlerResolver ;
1314import org .reactivecommons .async .impl .communications .ReactiveMessageListener ;
1415import org .reactivecommons .async .impl .communications .ReactiveMessageSender ;
16+ import org .reactivecommons .async .impl .config .props .AsyncProps ;
1517import org .reactivecommons .async .impl .converters .MessageConverter ;
1618import org .reactivecommons .async .impl .listeners .ApplicationCommandListener ;
1719import org .reactivecommons .async .impl .listeners .ApplicationEventListener ;
2224import org .springframework .context .annotation .Bean ;
2325import org .springframework .context .annotation .Configuration ;
2426import org .springframework .context .annotation .Import ;
25- import org .springframework .core .env .Environment ;
2627import reactor .core .publisher .Mono ;
2728
2829import java .util .Map ;
2930import java .util .concurrent .ConcurrentHashMap ;
3031import java .util .concurrent .ConcurrentMap ;
3132
3233@ Configuration
34+ @ RequiredArgsConstructor
3335@ Import (RabbitMqConfig .class )
3436public class MessageListenersConfig {
3537
36- @ Value ("${app.async.domain.events.exchange:domainEvents}" )
37- private String domainEventsExchangeName ;
38-
3938 @ Value ("${spring.application.name}" )
4039 private String appName ;
4140
42- @ Value ("${app.async.direct.exchange:directMessages}" )
43- private String directMessagesExchangeName ;
44-
45- @ Value ("${app.async.maxRetries:10}" )
46- private long maxRetries ;
47-
48- @ Value ("${app.async.retryDelay:1000}" )
49- private int retryDelay ;
41+ private final AsyncProps asyncProps ;
5042
51- @ Value ("${app.async.withDLQRetry:false}" )
52- private boolean withDLQRetry ;
5343
5444 @ Bean //TODO: move to own config (QueryListenerConfig)
55- public ApplicationEventListener eventListener (HandlerResolver resolver , MessageConverter messageConverter , ReactiveMessageListener receiver , DiscardNotifier discardNotifier ) throws Exception {
56- final ApplicationEventListener listener = new ApplicationEventListener (receiver , appName + ".subsEvents" , resolver , domainEventsExchangeName , messageConverter , withDLQRetry , maxRetries , retryDelay , discardNotifier );
45+ public ApplicationEventListener eventListener (HandlerResolver resolver , MessageConverter messageConverter ,
46+ ReactiveMessageListener receiver , DiscardNotifier discardNotifier ) {
47+ final ApplicationEventListener listener = new ApplicationEventListener (receiver ,
48+ appName + ".subsEvents" , resolver , asyncProps .getDomain ().getEvents ().getExchange (),
49+ messageConverter , asyncProps .getWithDLQRetry (), asyncProps .getMaxRetries (), asyncProps .getRetryDelay (),
50+ discardNotifier );
51+
5752 listener .startListener ();
53+
5854 return listener ;
5955 }
6056
6157 @ Bean //TODO: move to own config (QueryListenerConfig)
62- public ApplicationQueryListener queryListener (MessageConverter converter , HandlerResolver resolver , ReactiveMessageSender sender , ReactiveMessageListener rlistener , DiscardNotifier discardNotifier ) throws Exception {
63- final ApplicationQueryListener listener = new ApplicationQueryListener (rlistener , appName +".query" , resolver , sender , directMessagesExchangeName , converter , "globalReply" , withDLQRetry , maxRetries , retryDelay , discardNotifier );
58+ public ApplicationQueryListener queryListener (MessageConverter converter , HandlerResolver resolver ,
59+ ReactiveMessageSender sender , ReactiveMessageListener rlistener ,
60+ DiscardNotifier discardNotifier ) {
61+ final ApplicationQueryListener listener = new ApplicationQueryListener (rlistener ,
62+ appName + ".query" , resolver , sender , asyncProps .getDirect ().getExchange (), converter ,
63+ "globalReply" , asyncProps .getWithDLQRetry (), asyncProps .getMaxRetries (),
64+ asyncProps .getRetryDelay (), discardNotifier );
65+
6466 listener .startListener ();
67+
6568 return listener ;
6669 }
6770
6871 @ Bean
69- public ApplicationCommandListener applicationCommandListener (ReactiveMessageListener listener , HandlerResolver resolver , MessageConverter converter , DiscardNotifier discardNotifier ){
70- ApplicationCommandListener commandListener = new ApplicationCommandListener (listener , appName , resolver , directMessagesExchangeName , converter , withDLQRetry , maxRetries , retryDelay , discardNotifier );
72+ public ApplicationCommandListener applicationCommandListener (ReactiveMessageListener listener ,
73+ HandlerResolver resolver , MessageConverter converter ,
74+ DiscardNotifier discardNotifier ) {
75+ ApplicationCommandListener commandListener = new ApplicationCommandListener (listener , appName , resolver ,
76+ asyncProps .getDirect ().getExchange (), converter , asyncProps .getWithDLQRetry (), asyncProps .getMaxRetries (),
77+ asyncProps .getRetryDelay (), discardNotifier );
78+
7179 commandListener .startListener ();
80+
7281 return commandListener ;
7382 }
7483
@@ -78,26 +87,26 @@ public DynamicRegistry dynamicRegistry(HandlerResolver resolver, ReactiveMessage
7887 }
7988
8089 @ Bean
81- public HandlerResolver resolver (ApplicationContext context , DefaultQueryHandler defaultHandler , Environment env , DefaultCommandHandler defaultCommandHandler ) {
90+ public HandlerResolver resolver (ApplicationContext context , DefaultCommandHandler defaultCommandHandler ) {
8291 final Map <String , HandlerRegistry > registries = context .getBeansOfType (HandlerRegistry .class );
8392
8493 final ConcurrentMap <String , RegisteredQueryHandler > handlers = registries
85- .values ().stream ()
86- .flatMap (r -> r .getHandlers ().stream ())
87- .collect (ConcurrentHashMap ::new , (map , handler ) -> map .put (handler .getPath (), handler ),
88- ConcurrentHashMap ::putAll );
94+ .values ().stream ()
95+ .flatMap (r -> r .getHandlers ().stream ())
96+ .collect (ConcurrentHashMap ::new , (map , handler ) -> map .put (handler .getPath (), handler ),
97+ ConcurrentHashMap ::putAll );
8998
9099 final ConcurrentMap <String , RegisteredEventListener > eventListeners = registries
91- .values ().stream ()
92- .flatMap (r -> r .getEventListeners ().stream ())
93- .collect (ConcurrentHashMap ::new , (map , handler ) -> map .put (handler .getPath (), handler ),
94- ConcurrentHashMap ::putAll );
100+ .values ().stream ()
101+ .flatMap (r -> r .getEventListeners ().stream ())
102+ .collect (ConcurrentHashMap ::new , (map , handler ) -> map .put (handler .getPath (), handler ),
103+ ConcurrentHashMap ::putAll );
95104
96105 final ConcurrentMap <String , RegisteredCommandHandler > commandHandlers = registries
97- .values ().stream ()
98- .flatMap (r -> r .getCommandHandlers ().stream ())
99- .collect (ConcurrentHashMap ::new , (map , handler ) -> map .put (handler .getPath (), handler ),
100- ConcurrentHashMap ::putAll );
106+ .values ().stream ()
107+ .flatMap (r -> r .getCommandHandlers ().stream ())
108+ .collect (ConcurrentHashMap ::new , (map , handler ) -> map .put (handler .getPath (), handler ),
109+ ConcurrentHashMap ::putAll );
101110
102111 return new HandlerResolver (handlers , eventListeners , commandHandlers ) {
103112 @ Override
@@ -113,13 +122,13 @@ public <T> RegisteredCommandHandler<T> getCommandHandler(String path) {
113122 @ ConditionalOnMissingBean
114123 public DefaultQueryHandler defaultHandler () {
115124 return (DefaultQueryHandler <Object , Object >) command ->
116- Mono .error (new RuntimeException ("No Handler Registered" ));
125+ Mono .error (new RuntimeException ("No Handler Registered" ));
117126 }
118127
119128
120129 @ Bean
121130 @ ConditionalOnMissingBean
122- public DefaultCommandHandler defaultCommandHandler (){
131+ public DefaultCommandHandler defaultCommandHandler () {
123132 return message -> Mono .error (new RuntimeException ("No Handler Registered" ));
124133 }
125134}
0 commit comments