Не удалось остановить bean-компонент inputBindingLifecycle с помощью Spring Boot 2.1.5, Spring Cloud Stream Greenwich.SR1 и RocketMQ 0.9.0 - PullRequest
0 голосов
/ 28 мая 2019

Я видел похожий вопрос здесь , но он для более старой версии.Не уверен, что для меня конфликтующая версия и что мне нужно использовать.

Я использовал Spring Initializr для создания своего проекта, следуя SCS Reference Quick Start .Это настроило меня на мои текущие версии (2.1.5, Greenwich.SR1).

Единственная зависимость, которую я добавил вручную, была для RocketMQ, так как Spring Initializr не смог ее найти.Вот мой pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.5.RELEASE</version>
        <relativePath/>
    </parent>

    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-stream-rocketmq</artifactId>
            <version>0.9.0.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-stream-test-support</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Greenwich.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

Ошибка, о которой идет речь, возникает, когда я пытаюсь закрыть приложение, процесс, который каждый раз занимает почти минуту.Вот полная трассировка стека при закрытии приложения:

Не удалось остановить bean-компонент inputBindingLifecycle *

java.lang.IllegalStateException: Идет завершение работы на java.lang.ApplicationShutdownHooks.удалить (ApplicationShutdownHooks.java:82) ~ [na: 1.8.0_181] на java.lang.Runtime.removeShutdownHook (Runtime.java:239) ~ [na: 1.8.0_181] на org.apache.rocketmq.client.trace.AsyncTraceDispatcher.removeShutdownHook (AsyncTraceDispatcher.java:210) ~ [rocketmq-client-4.4.0.jar: 4.4.0] в org.apache.rocketmq.client.trace.AsyncTraceDispatcher.shutdown (AsyncTraceDiscketcherjjj3).-client-4.4.0.jar: 4.4.0] в org.apache.rocketmq.client.consumer.DefaultMQPushConsumer.shutdown (DefaultMQPushConsumer.java:598) ~ [rocketmq-client-4.4.0.jar: 4.4.0]at org.springframework.cloud.stream.binder.rocketmq.consuming.RocketMQListenerBindingContainer.stop (RocketMQListenerBindingContainer.java:175) ~ [spring-cloud-stream-binder-rocketmq-0.9.0.RELEASE.jar: 0.9.0.RELE] на org.springframework.cloud.stream.binder.rocketmq.integration.RocketMQInboundChannelAdapter.doStop (RocketMQInboundChannelAdapter.java:128) ~ [spring-cloud-stream-binder-rocketmq-0.9.0.RELEASE.jar: 0.9.0.RELEASE] в org.spring.integration.endpoint.AbstractEndpoint.stop (AbstractEndpoint.java:173) ~ [spring -gration-core-5.1.3.RELEASE.jar: 5.1.3.RELEASE] в org.springframework.cloud.stream.binder.DefaultBinding.stop (DefaultBinding.java:127) ~ [spring-cloud-stream-2.1.2.RELEASE.jar: 2.1.2.RELEASE] в org.springframework.cloud.stream.binder.DefaultBinding.unbind (DefaultBinding.java:159) ~ [spring-cloud-stream-2.1.2.RELEASE.jar: 2.1.2.RELEASE] в org.springframework.cloud.stream.binding.BindingService.unbindConsumers (BindingService.java:303) ~ [spring-cloud-stream-2.1.2.RELEASE.jar: 2.1.2.RELEASE] at org.springframework.cloud.stream.binding.BindableProxyFactory.unbindInputs (BindableProxyFactory.java:307) ~ [spring-cloud-stream-2.1.2.RELEASE.jar: 2.1.2.RELEASE] at org.springframework.cloud.stream.binding.InputBindingLifecycle.doStopWithBindable (InputBindingLifecycle.java:66) ~ [spring-cloud-stream-2.1.2.RELEASE.jar: 2.1.2.RELEASE] в java.util.LinkedHashMap $ LinkedValues.forEach (LinkedHashMap.java:608) ~[na: 1.8.0_181] at org.springframework.cloud.stream.binding.AbstractBindingLifecycle.stop (AbstractBindingLifecycle.java:56) ~ [spring-cloud-stream-2.1.2.RELEASE.jar: 2.1.2.RELEASE]в org.springframework.cloud.stream.binding.InputBindingLifecycle.stop (InputBindingLifecycle.java:34) ~ [spring-cloud-stream-2.1.2.RELEASE.jar: 2.1.2.RELEASE] в org.springframework.cloud.stream.binding.AbstractBindingLifecycle.stop (AbstractBindingLifecycle.java:73) ~ [spring-cloud-stream-2.1.2.RELEASE.jar: 2.1.2.RELEASE] в org.springframework.cloud.stream.binding.InputBindingLifecycle.stop(InputBindingLifecycle.java:34) ~ [spring-cloud-stream-2.1.2.RELEASE.jar: 2.1.2.RELEASE] в org.springframework.context.support.DefaultLifecycleProcessor.doStop (DefaultLifecycleProcessor.java:238) [весна-context-5.1.5.RELEASE.jar: 5.1.5.RELEASE] at org.springframework.context.support.DefaultLifecycleProcessor.access $ 300 (DefaultLifecycleProcessor.java:53) [spring-context-5.1.5.RELEASE.jar: 5.1.5.RELEASE] вorg.springframework.context.support.DefaultLifecycleProcessor $ LifecycleGroup.stop (DefaultLifecycleProcessor.java:377) [spring-context-5.1.5.RELEASE.jar: 5.1.5.RELEASE] в org.springframework.context.support.DefaultLifecycleProcessor.stopBeans (DefaultLifecycleProcessor.java:210) [spring-context-5.1.5.RELEASE.jar: 5.1.5.RELEASE] в org.springframework.context.support.DefaultLifecycleProcessor.onClose (DefaultLifecycleProcessor.java:128) [spring-context-5.1.5.RELEASE.jar: 5.1.5.RELEASE] в org.springframework.context.support.AbstractApplicationContext.doClose (AbstractApplicationContext.java:1018) [spring-context-5.1.5.RELEASE.jar: 5.1.5.RELEASE] в org.springframework.context.support.AbstractApplicationContext $ 1.run (AbstractApplicationContext.java:945) [spring-context-5.1.5.RELEASE.jar: 5.1.5.RELEASE] `` `

1 Ответ

0 голосов
/ 29 мая 2019

Решением было использование версии 0.2.1. RELEASE для связующего RocketMQ:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-stream-rocketmq</artifactId>
    <version>0.2.1.RELEASE</version>
</dependency>
...