1
1
package org .reactivecommons .async .impl .config ;
2
2
3
+ import lombok .RequiredArgsConstructor ;
3
4
import org .reactivecommons .async .api .DefaultCommandHandler ;
4
5
import org .reactivecommons .async .api .DefaultQueryHandler ;
5
6
import org .reactivecommons .async .api .DynamicRegistry ;
12
13
import org .reactivecommons .async .impl .HandlerResolver ;
13
14
import org .reactivecommons .async .impl .communications .ReactiveMessageListener ;
14
15
import org .reactivecommons .async .impl .communications .ReactiveMessageSender ;
16
+ import org .reactivecommons .async .impl .config .props .AsyncProps ;
15
17
import org .reactivecommons .async .impl .converters .MessageConverter ;
16
18
import org .reactivecommons .async .impl .listeners .ApplicationCommandListener ;
17
19
import org .reactivecommons .async .impl .listeners .ApplicationEventListener ;
22
24
import org .springframework .context .annotation .Bean ;
23
25
import org .springframework .context .annotation .Configuration ;
24
26
import org .springframework .context .annotation .Import ;
25
- import org .springframework .core .env .Environment ;
26
27
import reactor .core .publisher .Mono ;
27
28
28
29
import java .util .Map ;
29
30
import java .util .concurrent .ConcurrentHashMap ;
30
31
import java .util .concurrent .ConcurrentMap ;
31
32
32
33
@ Configuration
34
+ @ RequiredArgsConstructor
33
35
@ Import (RabbitMqConfig .class )
34
36
public class MessageListenersConfig {
35
37
36
- @ Value ("${app.async.domain.events.exchange:domainEvents}" )
37
- private String domainEventsExchangeName ;
38
-
39
38
@ Value ("${spring.application.name}" )
40
39
private String appName ;
41
40
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 ;
50
42
51
- @ Value ("${app.async.withDLQRetry:false}" )
52
- private boolean withDLQRetry ;
53
43
54
44
@ 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
+
57
52
listener .startListener ();
53
+
58
54
return listener ;
59
55
}
60
56
61
57
@ 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
+
64
66
listener .startListener ();
67
+
65
68
return listener ;
66
69
}
67
70
68
71
@ 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
+
71
79
commandListener .startListener ();
80
+
72
81
return commandListener ;
73
82
}
74
83
@@ -78,26 +87,26 @@ public DynamicRegistry dynamicRegistry(HandlerResolver resolver, ReactiveMessage
78
87
}
79
88
80
89
@ Bean
81
- public HandlerResolver resolver (ApplicationContext context , DefaultQueryHandler defaultHandler , Environment env , DefaultCommandHandler defaultCommandHandler ) {
90
+ public HandlerResolver resolver (ApplicationContext context , DefaultCommandHandler defaultCommandHandler ) {
82
91
final Map <String , HandlerRegistry > registries = context .getBeansOfType (HandlerRegistry .class );
83
92
84
93
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 );
89
98
90
99
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 );
95
104
96
105
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 );
101
110
102
111
return new HandlerResolver (handlers , eventListeners , commandHandlers ) {
103
112
@ Override
@@ -113,13 +122,13 @@ public <T> RegisteredCommandHandler<T> getCommandHandler(String path) {
113
122
@ ConditionalOnMissingBean
114
123
public DefaultQueryHandler defaultHandler () {
115
124
return (DefaultQueryHandler <Object , Object >) command ->
116
- Mono .error (new RuntimeException ("No Handler Registered" ));
125
+ Mono .error (new RuntimeException ("No Handler Registered" ));
117
126
}
118
127
119
128
120
129
@ Bean
121
130
@ ConditionalOnMissingBean
122
- public DefaultCommandHandler defaultCommandHandler (){
131
+ public DefaultCommandHandler defaultCommandHandler () {
123
132
return message -> Mono .error (new RuntimeException ("No Handler Registered" ));
124
133
}
125
134
}
0 commit comments