首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring中Spring集成Amqp的依赖关系

Spring中Spring集成Amqp的依赖关系
EN

Stack Overflow用户
提问于 2018-09-25 12:14:33
回答 2查看 2.3K关注 0票数 1

为了在Spring应用程序中使用,我需要包含哪些依赖项?

Spring版本为2.0.5。当前的依赖项是spring-boot-starter-integrationspring-integration-amqp

错误消息是像SimpleMessageListenerContainerAmqpInboundChannelAdapter这样的类,在类路径中找不到。

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

代码语言:javascript
复制
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')
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-02 14:22:27

我必须添加以下依赖项来解决所涉类(列表中的最后一个类使用了最新的spring,spring 2.0.5)

代码语言:javascript
复制
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机器上使用gradle 4.10.2,使用带有RabbitMQSpring-Integration选项的spring initialzr。以下是已更改的文件:

build.gradle

代码语言:javascript
复制
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'
}

用Spring Integration中的Java配置配置示例12.2.1的实现:

代码语言:javascript
复制
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());
            }

        };
    }
}
票数 1
EN

Stack Overflow用户

发布于 2018-09-25 13:23:56

添加此依赖项:

代码语言:javascript
复制
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>

你确定你有这个吗?

代码语言:javascript
复制
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-amqp</artifactId>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52498005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档