List of usage examples for org.springframework.integration.context IntegrationContextUtils ERROR_CHANNEL_BEAN_NAME
String ERROR_CHANNEL_BEAN_NAME
To view the source code for org.springframework.integration.context IntegrationContextUtils ERROR_CHANNEL_BEAN_NAME.
Click Source Link
From source file:org.springframework.cloud.stream.config.ChannelBindingServiceConfiguration.java
@Bean @ConditionalOnProperty("spring.cloud.stream.bindings." + ERROR_CHANNEL_NAME + ".destination") public SingleChannelBindable errorChannelBindable( @Qualifier(IntegrationContextUtils.ERROR_CHANNEL_BEAN_NAME) PublishSubscribeChannel errorChannel) { return new SingleChannelBindable(ERROR_CHANNEL_NAME, errorChannel); }
From source file:org.springframework.cloud.stream.config.BindingServiceConfiguration.java
@Bean @ConditionalOnProperty("spring.cloud.stream.bindings." + ERROR_CHANNEL_NAME + ".destination") public SingleBindingTargetBindable<MessageChannel> errorChannelBindable( @Qualifier(IntegrationContextUtils.ERROR_CHANNEL_BEAN_NAME) PublishSubscribeChannel errorChannel) { return new SingleBindingTargetBindable<MessageChannel>(ERROR_CHANNEL_NAME, errorChannel); }
From source file:org.springframework.cloud.stream.binder.AbstractMessageChannelBinder.java
/** * Register an error channel for the destination when an async send error is received. * Bridge the channel to the global error channel (if present). * @param destination the destination./*w w w. ja v a 2 s .co m*/ * @return the channel. */ private SubscribableChannel registerErrorInfrastructure(ProducerDestination destination) { ConfigurableListableBeanFactory beanFactory = getApplicationContext().getBeanFactory(); String errorChannelName = errorsBaseName(destination); SubscribableChannel errorChannel = null; if (getApplicationContext().containsBean(errorChannelName)) { Object errorChannelObject = getApplicationContext().getBean(errorChannelName); if (!(errorChannelObject instanceof SubscribableChannel)) { throw new IllegalStateException( "Error channel '" + errorChannelName + "' must be a SubscribableChannel"); } errorChannel = (SubscribableChannel) errorChannelObject; } else { errorChannel = new PublishSubscribeChannel(); beanFactory.registerSingleton(errorChannelName, errorChannel); errorChannel = (PublishSubscribeChannel) beanFactory.initializeBean(errorChannel, errorChannelName); } MessageChannel defaultErrorChannel = null; if (getApplicationContext().containsBean(IntegrationContextUtils.ERROR_CHANNEL_BEAN_NAME)) { defaultErrorChannel = getApplicationContext().getBean(IntegrationContextUtils.ERROR_CHANNEL_BEAN_NAME, MessageChannel.class); } if (defaultErrorChannel != null) { BridgeHandler errorBridge = new BridgeHandler(); errorBridge.setOutputChannel(defaultErrorChannel); errorChannel.subscribe(errorBridge); String errorBridgeHandlerName = getErrorBridgeName(destination); beanFactory.registerSingleton(errorBridgeHandlerName, errorBridge); beanFactory.initializeBean(errorBridge, errorBridgeHandlerName); } return errorChannel; }
From source file:org.springframework.cloud.stream.binder.AbstractMessageChannelBinder.java
/** * Build an errorChannelRecoverer that writes to a pub/sub channel for the destination * when an exception is thrown to a consumer. * @param destination the destination./*from w ww . j av a 2 s. c om*/ * @param group the group. * @param consumerProperties the properties. * @param true if this is for a polled consumer. * @return the ErrorInfrastructure which is a holder for the error channel, the recoverer and the * message handler that is subscribed to the channel. */ protected final ErrorInfrastructure registerErrorInfrastructure(ConsumerDestination destination, String group, C consumerProperties, boolean polled) { ErrorMessageStrategy errorMessageStrategy = getErrorMessageStrategy(); ConfigurableListableBeanFactory beanFactory = getApplicationContext().getBeanFactory(); String errorChannelName = errorsBaseName(destination, group, consumerProperties); SubscribableChannel errorChannel = null; if (getApplicationContext().containsBean(errorChannelName)) { Object errorChannelObject = getApplicationContext().getBean(errorChannelName); if (!(errorChannelObject instanceof SubscribableChannel)) { throw new IllegalStateException( "Error channel '" + errorChannelName + "' must be a SubscribableChannel"); } errorChannel = (SubscribableChannel) errorChannelObject; } else { errorChannel = new BinderErrorChannel(); beanFactory.registerSingleton(errorChannelName, errorChannel); errorChannel = (LastSubscriberAwareChannel) beanFactory.initializeBean(errorChannel, errorChannelName); } ErrorMessageSendingRecoverer recoverer; if (errorMessageStrategy == null) { recoverer = new ErrorMessageSendingRecoverer(errorChannel); } else { recoverer = new ErrorMessageSendingRecoverer(errorChannel, errorMessageStrategy); } String recovererBeanName = getErrorRecovererName(destination, group, consumerProperties); beanFactory.registerSingleton(recovererBeanName, recoverer); beanFactory.initializeBean(recoverer, recovererBeanName); MessageHandler handler; if (polled) { handler = getPolledConsumerErrorMessageHandler(destination, group, consumerProperties); } else { handler = getErrorMessageHandler(destination, group, consumerProperties); } MessageChannel defaultErrorChannel = null; if (getApplicationContext().containsBean(IntegrationContextUtils.ERROR_CHANNEL_BEAN_NAME)) { defaultErrorChannel = getApplicationContext().getBean(IntegrationContextUtils.ERROR_CHANNEL_BEAN_NAME, MessageChannel.class); } if (handler == null && errorChannel instanceof LastSubscriberAwareChannel) { handler = getDefaultErrorMessageHandler((LastSubscriberAwareChannel) errorChannel, defaultErrorChannel != null); } String errorMessageHandlerName = getErrorMessageHandlerName(destination, group, consumerProperties); if (handler != null) { beanFactory.registerSingleton(errorMessageHandlerName, handler); beanFactory.initializeBean(handler, errorMessageHandlerName); errorChannel.subscribe(handler); } if (defaultErrorChannel != null) { BridgeHandler errorBridge = new BridgeHandler(); errorBridge.setOutputChannel(defaultErrorChannel); errorChannel.subscribe(errorBridge); String errorBridgeHandlerName = getErrorBridgeName(destination, group, consumerProperties); beanFactory.registerSingleton(errorBridgeHandlerName, errorBridge); beanFactory.initializeBean(errorBridge, errorBridgeHandlerName); } return new ErrorInfrastructure(errorChannel, recoverer, handler); }
From source file:org.springframework.integration.channel.MessagePublishingErrorHandler.java
private MessageChannel resolveErrorChannel(Throwable t) { Message<?> failedMessage = (t instanceof MessagingException) ? ((MessagingException) t).getFailedMessage() : null;/*from ww w.ja va2 s . c om*/ if (this.defaultErrorChannel == null && this.channelResolver != null) { this.defaultErrorChannel = this.channelResolver .resolveChannelName(IntegrationContextUtils.ERROR_CHANNEL_BEAN_NAME); } if (failedMessage == null || failedMessage.getHeaders().getErrorChannel() == null) { return this.defaultErrorChannel; } Object errorChannelHeader = failedMessage.getHeaders().getErrorChannel(); if (errorChannelHeader instanceof MessageChannel) { return (MessageChannel) errorChannelHeader; } Assert.isInstanceOf(String.class, errorChannelHeader, "Unsupported error channel header type. Expected MessageChannel or String, but actual type is [" + errorChannelHeader.getClass() + "]"); return this.channelResolver.resolveChannelName((String) errorChannelHeader); }
From source file:org.springframework.integration.config.DefaultConfiguringBeanFactoryPostProcessor.java
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { if (beanFactory instanceof BeanDefinitionRegistry) { BeanDefinitionRegistry registry = (BeanDefinitionRegistry) beanFactory; this.registerNullChannel(registry); if (!beanFactory.containsBean(IntegrationContextUtils.ERROR_CHANNEL_BEAN_NAME)) { this.registerErrorChannel(registry); }// w w w .j a v a2s . com if (!beanFactory.containsBean(IntegrationContextUtils.TASK_SCHEDULER_BEAN_NAME)) { this.registerTaskScheduler(registry); } this.registerIdGeneratorConfigurer(registry); } else if (this.logger.isWarnEnabled()) { this.logger.warn("BeanFactory is not a BeanDefinitionRegistry. The default '" + IntegrationContextUtils.ERROR_CHANNEL_BEAN_NAME + "' and '" + IntegrationContextUtils.TASK_SCHEDULER_BEAN_NAME + "' cannot be configured." + " Also, any custom IdGenerator implementation configured in this BeanFactory" + " will not be recognized."); } }
From source file:org.springframework.integration.config.DefaultConfiguringBeanFactoryPostProcessor.java
/** * Register an error channel in the given BeanDefinitionRegistry. *///from www . ja v a 2s . co m private void registerErrorChannel(BeanDefinitionRegistry registry) { if (this.logger.isInfoEnabled()) { this.logger.info("No bean named '" + IntegrationContextUtils.ERROR_CHANNEL_BEAN_NAME + "' has been explicitly defined. Therefore, a default PublishSubscribeChannel will be created."); } registry.registerBeanDefinition(IntegrationContextUtils.ERROR_CHANNEL_BEAN_NAME, new RootBeanDefinition(PublishSubscribeChannel.class)); BeanDefinition loggingHandler = BeanDefinitionBuilder.genericBeanDefinition(LoggingHandler.class) .addConstructorArgValue("ERROR").getBeanDefinition(); String errorLoggerBeanName = ERROR_LOGGER_BEAN_NAME + IntegrationConfigUtils.HANDLER_ALIAS_SUFFIX; registry.registerBeanDefinition(errorLoggerBeanName, loggingHandler); BeanDefinitionBuilder loggingEndpointBuilder = BeanDefinitionBuilder .genericBeanDefinition(ConsumerEndpointFactoryBean.class) .addPropertyReference("handler", errorLoggerBeanName) .addPropertyValue("inputChannelName", IntegrationContextUtils.ERROR_CHANNEL_BEAN_NAME); BeanComponentDefinition componentDefinition = new BeanComponentDefinition( loggingEndpointBuilder.getBeanDefinition(), ERROR_LOGGER_BEAN_NAME); BeanDefinitionReaderUtils.registerBeanDefinition(componentDefinition, registry); }
From source file:org.springframework.integration.config.xml.DefaultConfiguringBeanFactoryPostProcessor.java
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { if (beanFactory instanceof BeanDefinitionRegistry) { BeanDefinitionRegistry registry = (BeanDefinitionRegistry) beanFactory; this.registerNullChannel(registry); if (!beanFactory.containsBean(IntegrationContextUtils.ERROR_CHANNEL_BEAN_NAME)) { this.registerErrorChannel(registry); }// w w w.j av a2s .c om if (!beanFactory.containsBean(IntegrationContextUtils.TASK_SCHEDULER_BEAN_NAME)) { this.registerTaskScheduler(registry); } this.registerIdGeneratorConfigurer(registry); } else if (logger.isWarnEnabled()) { logger.warn("BeanFactory is not a BeanDefinitionRegistry. The default '" + IntegrationContextUtils.ERROR_CHANNEL_BEAN_NAME + "' and '" + IntegrationContextUtils.TASK_SCHEDULER_BEAN_NAME + "' cannot be configured." + " Also, any custom IdGenerator implementation configured in this BeanFactory" + " will not be recognized."); } }
From source file:org.springframework.integration.config.xml.DefaultConfiguringBeanFactoryPostProcessor.java
/** * Register an error channel in the given BeanDefinitionRegistry. *//*from ww w . j a v a 2 s . c om*/ private void registerErrorChannel(BeanDefinitionRegistry registry) { if (logger.isInfoEnabled()) { logger.info("No bean named '" + IntegrationContextUtils.ERROR_CHANNEL_BEAN_NAME + "' has been explicitly defined. Therefore, a default PublishSubscribeChannel will be created."); } RootBeanDefinition errorChannelDef = new RootBeanDefinition(); errorChannelDef .setBeanClassName(IntegrationNamespaceUtils.BASE_PACKAGE + ".channel.PublishSubscribeChannel"); BeanDefinitionHolder errorChannelHolder = new BeanDefinitionHolder(errorChannelDef, IntegrationContextUtils.ERROR_CHANNEL_BEAN_NAME); BeanDefinitionReaderUtils.registerBeanDefinition(errorChannelHolder, registry); BeanDefinitionBuilder loggingHandlerBuilder = BeanDefinitionBuilder .genericBeanDefinition(IntegrationNamespaceUtils.BASE_PACKAGE + ".handler.LoggingHandler"); loggingHandlerBuilder.addConstructorArgValue("ERROR"); BeanDefinitionBuilder loggingEndpointBuilder = BeanDefinitionBuilder .genericBeanDefinition(IntegrationNamespaceUtils.BASE_PACKAGE + ".endpoint.EventDrivenConsumer"); loggingEndpointBuilder.addConstructorArgReference(IntegrationContextUtils.ERROR_CHANNEL_BEAN_NAME); loggingEndpointBuilder.addConstructorArgValue(loggingHandlerBuilder.getBeanDefinition()); BeanComponentDefinition componentDefinition = new BeanComponentDefinition( loggingEndpointBuilder.getBeanDefinition(), ERROR_LOGGER_BEAN_NAME); BeanDefinitionReaderUtils.registerBeanDefinition(componentDefinition, registry); }
From source file:org.springframework.integration.config.xml.DefaultConfiguringBeanFactoryPostProcessor.java
/** * Register a TaskScheduler in the given BeanDefinitionRegistry. *///from w w w . j av a 2 s . co m private void registerTaskScheduler(BeanDefinitionRegistry registry) { if (logger.isInfoEnabled()) { logger.info("No bean named '" + IntegrationContextUtils.TASK_SCHEDULER_BEAN_NAME + "' has been explicitly defined. Therefore, a default ThreadPoolTaskScheduler will be created."); } BeanDefinitionBuilder schedulerBuilder = BeanDefinitionBuilder .genericBeanDefinition("org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler"); schedulerBuilder.addPropertyValue("poolSize", 10); schedulerBuilder.addPropertyValue("threadNamePrefix", "task-scheduler-"); schedulerBuilder.addPropertyValue("rejectedExecutionHandler", new CallerRunsPolicy()); BeanDefinitionBuilder errorHandlerBuilder = BeanDefinitionBuilder.genericBeanDefinition( IntegrationNamespaceUtils.BASE_PACKAGE + ".channel.MessagePublishingErrorHandler"); errorHandlerBuilder.addPropertyReference("defaultErrorChannel", IntegrationContextUtils.ERROR_CHANNEL_BEAN_NAME); schedulerBuilder.addPropertyValue("errorHandler", errorHandlerBuilder.getBeanDefinition()); BeanComponentDefinition schedulerComponent = new BeanComponentDefinition( schedulerBuilder.getBeanDefinition(), IntegrationContextUtils.TASK_SCHEDULER_BEAN_NAME); BeanDefinitionReaderUtils.registerBeanDefinition(schedulerComponent, registry); }