Spring Integration:错误通道在XML中不可用

时间:2017-07-09 13:25:38

标签: jms spring-integration spring-jms

您好我正在使用Spring集成与JMS集成,我注意到当我尝试在我的jms-message-drive-outbound-adapter中使用错误通道时,它会给出以下错误;

根据我以前的问题的建议,我想检索异常和回滚事务,这样我就不会丢失消息。如果无法使用错误通道,我该如何实现呢?

cvc-complex-type.3.2.2: Attribute 'error-channel' is not allowed to appear in element 'jms:message-driven-channel-adapter'.

我的XML如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:jms="http://www.springframework.org/schema/integration/jms"
    xmlns:integration="http://www.springframework.org/schema/integration"
    xmlns:int-kafka="http://www.springframework.org/schema/integration/kafka"
    xmlns:task="http://www.springframework.org/schema/task"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/integration/jms 
    http://www.springframework.org/schema/integration/jms/spring-integration-jms.xsd
    http://www.springframework.org/schema/integration/kafka 
    http://www.springframework.org/schema/integration/kafka/spring-integration-kafka.xsd">

    <jms:message-driven-channel-adapter id="requestChannelAdapter" channel="requestChannel" 
    container="requestListenerContainer" error-channel=""/>


    <int-kafka:outbound-channel-adapter
        id="kafkaOutboundChannelAdapter" kafka-template="kafkaTemplate"
        auto-startup="true" sync="true" channel="inputToKafka" topic="test">
    </int-kafka:outbound-channel-adapter>
</beans>

它是否被最新版本中的其他内容替换。

我的POM文件在下面列出,以供参考,以防因版本不匹配而导致:

<?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>

    <groupId>com.test.dzone.activemq</groupId>
    <artifactId>jpmc</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>jpmc</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.5.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-jms</artifactId>
            <version>2.0.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-kafka</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-java-dsl</artifactId>
            <version>1.1.2.RELEASE</version>
        </dependency>
        <!-- dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-zookeeper</artifactId>
            <version>4.3.9.RELEASE</version>
        </dependency-->

        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-broker</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka_2.10</artifactId>
            <version>0.8.1.1</version>
        </dependency>
    </dependencies>

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


</project>

1 个答案:

答案 0 :(得分:0)

你可以忽略它;您的IDE似乎正在使用来自互联网的架构 - 请参阅其顶部的注释......

http://www.springframework.org/schema/integration/jms/spring-integration-jms.xsd

<!--
       +++++ IMPORTANT +++++

     This schema is for the 1.0 version of Spring Integration JMS. We cannot update it to the current schema
     because that will break any applications using 1.0.3 or lower. For subsequent versions, the unversioned
     schema is resolved from the classpath and obtained from the jar.
     Please refer to github:

https://github.com/spring-projects/spring-integration/tree/master/spring-integration-jms/src/main/resources/org/springframework/integration/jms/config

     for the latest schema. 
-->

您可以忽略它,也可以使用知识如何通过/META-INF/spring.schemas在类路径中查找当前架构的Spring-Aware IDE(Spring Tool Suite - STS,IntelliJ IDEA等)。

如果您已经在使用STS(或使用Spring IDE插件进行eclipse),那么一定要启用&#34; Spring Nature&#34;关于这个项目。