1313import java .lang .annotation .Annotation ;
1414import java .lang .reflect .Method ;
1515import java .util .Arrays ;
16- import java .util .List ;
1716import java .util .Map ;
1817
19- import static java .util .stream .Collectors .toList ;
20-
2118@ Slf4j
2219@ Service
2320public class RabbitChannelsScanner extends AbstractChannelScanner <RabbitListener >
@@ -37,14 +34,28 @@ protected Class<RabbitListener> getListenerAnnotationClass() {
3734
3835 @ Override
3936 protected String getChannelName (RabbitListener annotation ) {
40- List <String > resolvedQueues = Arrays .stream (annotation .queues ())
37+ if (annotation .queues ().length > 0 ) {
38+ return getChannelNameFromQueues (annotation );
39+ }
40+
41+ return getChannelNameFromBindings (annotation );
42+ }
43+
44+ private String getChannelNameFromQueues (RabbitListener annotation ) {
45+ return Arrays .stream (annotation .queues ())
46+ .map (resolver ::resolveStringValue )
47+ .peek (queue -> log .debug ("Resolved queue name: {}" , queue ))
48+ .findFirst ()
49+ .orElseThrow (() -> new IllegalArgumentException ("No queue name was found in @RabbitListener annotation" ));
50+ }
51+
52+ private String getChannelNameFromBindings (RabbitListener annotation ) {
53+ return Arrays .stream (annotation .bindings ())
54+ .map (binding -> binding .value ().name ())
4155 .map (resolver ::resolveStringValue )
42- .collect (toList ());
43- resolvedQueues .addAll (Arrays .stream (annotation .bindings ())
44- .map (bind -> bind .value ().name ())
45- .collect (toList ()));
46- log .debug ("Found queues: {}" , String .join (", " , resolvedQueues ));
47- return resolvedQueues .get (0 );
56+ .peek (queue -> log .debug ("Resolved queue name: {}" , queue ))
57+ .findFirst ()
58+ .orElseThrow (() -> new IllegalArgumentException ("No queue name was found in @RabbitListener annotation" ));
4859 }
4960
5061 @ Override
0 commit comments