private String[] resolveName(String name) { if (!(getApplicationContext() instanceof ConfigurableApplicationContext)) { return wrapInStringArray(name); } ConfigurableApplicationContext applicationContext = (ConfigurableApplicationContext) getApplicationContext(); ConfigurableBeanFactory configurableBeanFactory = applicationContext.getBeanFactory(); String placeholdersResolved = configurableBeanFactory.resolveEmbeddedValue(name); BeanExpressionResolver exprResolver = configurableBeanFactory.getBeanExpressionResolver(); if (exprResolver == null) { return wrapInStringArray(name); } Object result = exprResolver.evaluate(placeholdersResolved, new BeanExpressionContext(configurableBeanFactory, null)); if (result instanceof String[]) { return (String[]) result; } else if (result != null) { return wrapInStringArray(result); } else { return wrapInStringArray(name); } }
@Override protected List<? extends HandlerMethodReturnValueHandler> initReturnValueHandlers() { return new ArrayList<>(this.getCustomReturnValueHandlers()); }
@Override protected MappingInformation getMatchingMapping(MappingInformation mapping, Message<?> message) { if (mapping.getLogicalResourceIds().contains(getDestination(message))) { return mapping; } else { return null; } }
public QueueMessageHandler createQueueMessageHandler() { QueueMessageHandler queueMessageHandler = new QueueMessageHandler( CollectionUtils.isEmpty(this.messageConverters) ? Arrays.asList(getDefaultMappingJackson2MessageConverter()) : this.messageConverters ); if (!CollectionUtils.isEmpty(this.argumentResolvers)) { queueMessageHandler.getCustomArgumentResolvers().addAll(this.argumentResolvers); } if (!CollectionUtils.isEmpty(this.returnValueHandlers)) { queueMessageHandler.getCustomReturnValueHandlers().addAll(this.returnValueHandlers); } SendToHandlerMethodReturnValueHandler sendToHandlerMethodReturnValueHandler; if (this.sendToMessagingTemplate != null) { sendToHandlerMethodReturnValueHandler = new SendToHandlerMethodReturnValueHandler(this.sendToMessagingTemplate); } else { sendToHandlerMethodReturnValueHandler = new SendToHandlerMethodReturnValueHandler( getDefaultSendToQueueMessagingTemplate(this.amazonSqs, this.resourceIdResolver)); } sendToHandlerMethodReturnValueHandler.setBeanFactory(this.beanFactory); queueMessageHandler.getCustomReturnValueHandlers().add(sendToHandlerMethodReturnValueHandler); return queueMessageHandler; }
@Override protected List<? extends HandlerMethodArgumentResolver> initArgumentResolvers() { List<HandlerMethodArgumentResolver> resolvers = new ArrayList<>(getCustomArgumentResolvers()); resolvers.add(new HeaderMethodArgumentResolver(null, null)); resolvers.add(new HeadersMethodArgumentResolver()); resolvers.add(new NotificationSubjectArgumentResolver()); resolvers.add(new AcknowledgmentHandlerMethodArgumentResolver(ACKNOWLEDGMENT)); resolvers.add(new VisibilityHandlerMethodArgumentResolver(VISIBILITY)); CompositeMessageConverter compositeMessageConverter = createPayloadArgumentCompositeConverter(); resolvers.add(new NotificationMessageArgumentResolver(compositeMessageConverter)); resolvers.add(new PayloadArgumentResolver(compositeMessageConverter, new NoOpValidator())); return resolvers; }
@Override protected MappingInformation getMappingForMethod(Method method, Class<?> handlerType) { SqsListener sqsListenerAnnotation = AnnotationUtils.findAnnotation(method, SqsListener.class); if (sqsListenerAnnotation != null && sqsListenerAnnotation.value().length > 0) { if (sqsListenerAnnotation.deletionPolicy() == SqsMessageDeletionPolicy.NEVER && hasNoAcknowledgmentParameter(method.getParameterTypes())) { this.logger.warn("Listener method '" + method.getName() + "' in type '" + method.getDeclaringClass().getName() + "' has deletion policy 'NEVER' but does not have a parameter of type Acknowledgment."); } return new MappingInformation(resolveDestinationNames(sqsListenerAnnotation.value()), sqsListenerAnnotation.deletionPolicy()); } MessageMapping messageMappingAnnotation = AnnotationUtils.findAnnotation(method, MessageMapping.class); if (messageMappingAnnotation != null && messageMappingAnnotation.value().length > 0) { return new MappingInformation(resolveDestinationNames(messageMappingAnnotation.value()), SqsMessageDeletionPolicy.ALWAYS); } return null; }
protected void executeMessage(org.springframework.messaging.Message<String> stringMessage) { getMessageHandler().handleMessage(stringMessage); }
protected void initialize() { synchronized (this.getLifecycleMonitor()) { if (this.destinationResolver == null) { if (this.resourceIdResolver == null) { this.destinationResolver = new CachingDestinationResolverProxy<>(new DynamicQueueUrlDestinationResolver(this.amazonSqs)); } else { this.destinationResolver = new CachingDestinationResolverProxy<>(new DynamicQueueUrlDestinationResolver(this.amazonSqs, this.resourceIdResolver)); } } for (QueueMessageHandler.MappingInformation mappingInformation : this.messageHandler.getHandlerMethods().keySet()) { for (String queue : mappingInformation.getLogicalResourceIds()) { QueueAttributes queueAttributes = queueAttributes(queue, mappingInformation.getDeletionPolicy()); if (queueAttributes != null) { this.registeredQueues.put(queue, queueAttributes); } } } this.active = true; this.getLifecycleMonitor().notifyAll(); } }
public QueueMessageHandler createQueueMessageHandler() { QueueMessageHandler queueMessageHandler = new QueueMessageHandler( CollectionUtils.isEmpty(this.messageConverters) ? Arrays.asList(getDefaultMappingJackson2MessageConverter()) : this.messageConverters ); if (!CollectionUtils.isEmpty(this.argumentResolvers)) { queueMessageHandler.getCustomArgumentResolvers().addAll(this.argumentResolvers); } if (!CollectionUtils.isEmpty(this.returnValueHandlers)) { queueMessageHandler.getCustomReturnValueHandlers().addAll(this.returnValueHandlers); } SendToHandlerMethodReturnValueHandler sendToHandlerMethodReturnValueHandler; if (this.sendToMessagingTemplate != null) { sendToHandlerMethodReturnValueHandler = new SendToHandlerMethodReturnValueHandler(this.sendToMessagingTemplate); } else { sendToHandlerMethodReturnValueHandler = new SendToHandlerMethodReturnValueHandler( getDefaultSendToQueueMessagingTemplate(this.amazonSqs, this.resourceIdResolver)); } sendToHandlerMethodReturnValueHandler.setBeanFactory(this.beanFactory); queueMessageHandler.getCustomReturnValueHandlers().add(sendToHandlerMethodReturnValueHandler); return queueMessageHandler; }
@Override protected List<? extends HandlerMethodArgumentResolver> initArgumentResolvers() { List<HandlerMethodArgumentResolver> resolvers = new ArrayList<>(getCustomArgumentResolvers()); resolvers.add(new HeaderMethodArgumentResolver(null, null)); resolvers.add(new HeadersMethodArgumentResolver()); resolvers.add(new NotificationSubjectArgumentResolver()); resolvers.add(new AcknowledgmentHandlerMethodArgumentResolver(ACKNOWLEDGMENT)); resolvers.add(new VisibilityHandlerMethodArgumentResolver(VISIBILITY)); CompositeMessageConverter compositeMessageConverter = createPayloadArgumentCompositeConverter(); resolvers.add(new NotificationMessageArgumentResolver(compositeMessageConverter)); resolvers.add(new PayloadArgumentResolver(compositeMessageConverter, new NoOpValidator())); return resolvers; }
@Override protected MappingInformation getMappingForMethod(Method method, Class<?> handlerType) { SqsListener sqsListenerAnnotation = AnnotationUtils.findAnnotation(method, SqsListener.class); if (sqsListenerAnnotation != null && sqsListenerAnnotation.value().length > 0) { if (sqsListenerAnnotation.deletionPolicy() == SqsMessageDeletionPolicy.NEVER && hasNoAcknowledgmentParameter(method.getParameterTypes())) { this.logger.warn("Listener method '" + method.getName() + "' in type '" + method.getDeclaringClass().getName() + "' has deletion policy 'NEVER' but does not have a parameter of type Acknowledgment."); } return new MappingInformation(resolveDestinationNames(sqsListenerAnnotation.value()), sqsListenerAnnotation.deletionPolicy()); } MessageMapping messageMappingAnnotation = AnnotationUtils.findAnnotation(method, MessageMapping.class); if (messageMappingAnnotation != null && messageMappingAnnotation.value().length > 0) { return new MappingInformation(resolveDestinationNames(messageMappingAnnotation.value()), SqsMessageDeletionPolicy.ALWAYS); } return null; }
protected void executeMessage(org.springframework.messaging.Message<String> stringMessage) { getMessageHandler().handleMessage(stringMessage); }
protected void initialize() { synchronized (this.getLifecycleMonitor()) { if (this.destinationResolver == null) { if (this.resourceIdResolver == null) { this.destinationResolver = new CachingDestinationResolverProxy<>(new DynamicQueueUrlDestinationResolver(this.amazonSqs)); } else { this.destinationResolver = new CachingDestinationResolverProxy<>(new DynamicQueueUrlDestinationResolver(this.amazonSqs, this.resourceIdResolver)); } } for (QueueMessageHandler.MappingInformation mappingInformation : this.messageHandler.getHandlerMethods().keySet()) { for (String queue : mappingInformation.getLogicalResourceIds()) { QueueAttributes queueAttributes = queueAttributes(queue, mappingInformation.getDeletionPolicy()); if (queueAttributes != null) { this.registeredQueues.put(queue, queueAttributes); } } } this.active = true; this.getLifecycleMonitor().notifyAll(); } }
private String[] resolveName(String name) { if (!(getApplicationContext() instanceof ConfigurableApplicationContext)) { return wrapInStringArray(name); } ConfigurableApplicationContext applicationContext = (ConfigurableApplicationContext) getApplicationContext(); ConfigurableBeanFactory configurableBeanFactory = applicationContext.getBeanFactory(); String placeholdersResolved = configurableBeanFactory.resolveEmbeddedValue(name); BeanExpressionResolver exprResolver = configurableBeanFactory.getBeanExpressionResolver(); if (exprResolver == null) { return wrapInStringArray(name); } Object result = exprResolver.evaluate(placeholdersResolved, new BeanExpressionContext(configurableBeanFactory, null)); if (result instanceof String[]) { return (String[]) result; } else if (result != null) { return wrapInStringArray(result); } else { return wrapInStringArray(name); } }
@Override protected MappingInformation getMatchingMapping(MappingInformation mapping, Message<?> message) { if (mapping.getLogicalResourceIds().contains(getDestination(message))) { return mapping; } else { return null; } }
@Override protected List<? extends HandlerMethodReturnValueHandler> initReturnValueHandlers() { return new ArrayList<>(this.getCustomReturnValueHandlers()); }