代码之家  ›  专栏  ›  技术社区  ›  user1575148

Spring引导中Spring集成AMQP的依赖关系

  •  1
  • user1575148  · 技术社区  · 8 年前

    为了在Spring引导应用程序中使用Spring集成AMQP,我需要包括哪些依赖项?

    弹簧启动版本为2.0.5。 我目前的依赖关系是 spring-boot-starter-integration 和 spring-integration-amqp

    错误消息是类 SimpleMessageListenerContainer 和 AmqpInboundChannelAdapter 在类路径上找不到。

    更新: 我的build.gradle条目--

    buildscript {
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath("org.springframework.boot:spring-boot-gradle-plugin:2.0.5.RELEASE")
        }
    }
    
    dependencies {
        compile('org.springframework.boot:spring-boot-starter-integration')
        compile('org.springframework.boot:spring-boot-starter-amqp')
        compile('org.springframework.integration:spring-integration-amqp')
        testCompile('org.springframework.boot:spring-boot-starter-test')
    }
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   chriopp    7 年前

    我必须添加以下依赖项来解析有问题的类(列表中的最后一个使用最新的Spring Initializer,Spring Boot 2.0.5完成了这个任务)

    dependencies {
        implementation('org.springframework.boot:spring-boot-starter-amqp')
        implementation('org.springframework.boot:spring-boot-starter-integration')
        testImplementation('org.springframework.boot:spring-boot-starter-test')
    
        compile 'org.springframework.integration:spring-integration-amqp'
    }
    

    公平地说,这个答案已经给出了,只是不适合格雷德尔。

    我在Linux机器上使用Gradle4.10.2,Spring Boot InitialZr带有选项 RabbitMQ 和 Spring-Integration . 以下是更改的文件:

    平地

    buildscript {
        ext {
            springBootVersion = '2.0.5.RELEASE'
        }
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        }
    }
    
    apply plugin: 'java'
    apply plugin: 'eclipse'
    apply plugin: 'org.springframework.boot'
    apply plugin: 'io.spring.dependency-management'
    
    group = 'com.example'
    version = '0.0.1-SNAPSHOT'
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    
    dependencies {
        implementation('org.springframework.boot:spring-boot-starter-amqp')
        implementation('org.springframework.boot:spring-boot-starter-integration')
        testImplementation('org.springframework.boot:spring-boot-starter-test')
    
        compile 'org.springframework.integration:spring-integration-amqp'
    }
    

    实现示例2.2.1从Spring集成文档中使用Java配置进行配置:

    package com.example.integrationamqp;
    
    import org.springframework.amqp.rabbit.connection.ConnectionFactory;
    import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.boot.WebApplicationType;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.builder.SpringApplicationBuilder;
    import org.springframework.context.annotation.Bean;
    import org.springframework.integration.amqp.inbound.AmqpInboundChannelAdapter;
    import org.springframework.integration.amqp.inbound.AmqpInboundGateway;
    import org.springframework.integration.annotation.ServiceActivator;
    import org.springframework.integration.channel.DirectChannel;
    import org.springframework.integration.handler.AbstractReplyProducingMessageHandler;
    import org.springframework.messaging.Message;
    import org.springframework.messaging.MessageChannel;
    import org.springframework.messaging.MessageHandler;
    import org.springframework.messaging.MessagingException;
    
    
    
    @SpringBootApplication
    public class IntegrationAmqpApplication {
    
         public static void main(String[] args) {
            new SpringApplicationBuilder(IntegrationAmqpApplication.class)
                    .web(WebApplicationType.NONE)
                    .run(args);
        }
    
        @Bean
        public MessageChannel amqpInputChannel() {
            return new DirectChannel();
        }
    
        @Bean
        public AmqpInboundChannelAdapter inbound(SimpleMessageListenerContainer listenerContainer,
                                                 @Qualifier("amqpInputChannel") MessageChannel channel) {
            AmqpInboundChannelAdapter adapter = new AmqpInboundChannelAdapter(listenerContainer);
            adapter.setOutputChannel(channel);
            return adapter;
        }
    
        @Bean
        public SimpleMessageListenerContainer container(ConnectionFactory connectionFactory) {
            SimpleMessageListenerContainer container =
                    new SimpleMessageListenerContainer(connectionFactory);
            container.setQueueNames("foo");
            container.setConcurrentConsumers(2);
            // ...
            return container;
        }
    
        @Bean
        @ServiceActivator(inputChannel = "amqpInputChannel")
        public MessageHandler handler() {
            return new MessageHandler() {
    
                @Override
                public void handleMessage(Message<?> message) throws MessagingException {
                    System.out.println(message.getPayload());
                }
    
            };
        }
    }
    
        2
  •  1
  •   vanillaSugar    8 年前

    添加此依赖项:

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

    你确定你有这个吗?:

    <groupId>org.springframework.integration</groupId>
    <artifactId>spring-integration-amqp</artifactId>