異常解決編:spring cloud stream rabbiitMq配置エラーで起動できなくなりました.

8426 ワード

異常情報
org.springframework.beans.factory.BeanCreationNotAllowedException: Error creating bean with name 'eurekaAutoServiceRegistration': Singleton bean creation not allowed while singletons of this factory are in destruction (Do not request a bean from a BeanFactory in a destroy method implementation!)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:216)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1078)
    at org.springframework.context.event.ApplicationListenerMethodAdapter.getTargetBean(ApplicationListenerMethodAdapter.java:283)
    at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:253)
    at org.springframework.context.event.ApplicationListenerMethodAdapter.processEvent(ApplicationListenerMethodAdapter.java:177)
    at org.springframework.context.event.ApplicationListenerMethodAdapter.onApplicationEvent(ApplicationListenerMethodAdapter.java:140)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:393)
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:399)
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:347)
    at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:991)
    at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:958)
    at org.springframework.cloud.context.named.NamedContextFactory.destroy(NamedContextFactory.java:76)
    at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:272)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:578)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:554)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:961)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:523)
    at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.destroySingletons(FactoryBeanRegistrySupport.java:230)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:968)
    at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1030)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:556)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:303)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107)
    at com.dx.asst.customer.AsstCustomerApplication.main(AsstCustomerApplication.java:21)

2017-11-14 12:45:53.166  INFO [bootstrap,,,] 67268 --- [           main] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} closed
2017-11-14 12:45:53.169  INFO [bootstrap,,,] 67268 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
2017-11-14 12:45:53.203  INFO [bootstrap,,,] 67268 --- [           main] utoConfigurationReportLoggingInitializer : 

Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
2017-11-14 12:45:53.411 ERROR [bootstrap,,,] 67268 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

A component required a bean named 'SYNC_XGT_USER_UPDATED' that could not be found.


Action:

Consider defining a bean named 'SYNC_XGT_USER_UPDATED' in your configuration.
問題の分析
実はこのエラーは、設定されていない@EnbaleBinding(value={XXXXborcessor.class}ですが、モニターに@Stream Listenerを配置しています.エラーは比較的低級ですが、spring cloud streamネット上の資料が少ないので、エラーを貼り付けることができます.
spring cloud streamを使用して配置する注意事項
ここで注意しているのは、spring cloud streamを使う時、必ず3つの配置に注意してください.
  • Channelインターフェースを定義する場合、@Inputマークの方法戻り値はSubscribable Chanel類でメッセージチャネル定義を受信するため、@Outputマークの方法で戻り値Message Chanel類ユーザー生産メッセージであり、定義が完了したら@EnbaleBinding(value={xx.class}配置で開く必要があります.
  • appication.yml(もちろん.propertiesファイル)にあなたのchanelを配置していますが、ここではrabitmqに対してBindを配置していても、3つのパラメータdestination、group、content-typeがrabbiitmqに対して、destinationは交換機名であり、groupはキューの名前になります.contentt-typeはデータインタラクションのフォーマットタイプを指定するために使用されています.もしルーティング構成
    spring:cloud:stream:rabbit: bindings: Channel : consumer:bindingRoutingKey:
  • あなたのモニタークラスを定義し、メソッドに@Stream Listener(「あなたのメッセージが受信したChanelの名前」)を使用し、傍受部門に@Component注解
  • はい、とりあえずこんなに多いと言ってください.その後は単独の連載記事を書いて、spring cloud stream rabit Mqの使用について紹介します.もしspring cloud stream rabbitを使っている時に何か不明があったら、メッセージを残したり関心を持ったりしてください.