Http出站网关正在工作,但没有进行调用-使用spring integration DSL java

Http出站网关正在工作,但没有进行调用-使用spring integration DSL java,java,spring-integration,spring-integration-dsl,Java,Spring Integration,Spring Integration Dsl,我是spring集成框架的新手。下面是我的代码,我实际上正在尝试使用HTTP出站网关和SI DSL配置进行一些HTTP调用。当我运行代码时,调用了IntegrationFlow方法,但HTTP命中没有成功。我不知道为什么 主类 @EnableIntegration @Configuration @Import({ AptHttp.class }) public class DemosiApplication { public static void main(String[] args

我是spring集成框架的新手。下面是我的代码,我实际上正在尝试使用HTTP出站网关和SI DSL配置进行一些HTTP调用。当我运行代码时,调用了
IntegrationFlow
方法,但HTTP命中没有成功。我不知道为什么

主类

@EnableIntegration
@Configuration
@Import({ AptHttp.class })
public class DemosiApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemosiApplication.class, args);
    }

}
@Configuration
@IntegrationComponentScan
public class AptHttp {

    @EnableIntegration
    public static class ContextConfiguration {

        @Bean("inputChannel")
        public MessageChannel inputChannel() {
            return MessageChannels.direct().get();
        }

        @Bean
        public MessageChannel outputChannel() {
            return MessageChannels.direct().get();
        }

        @Bean
        public IntegrationFlow outBoundFlow() {
            System.out.println("Inside t outBoundFlow flow ");
            final String uri = "http://localhost:9090/api/test";
            return f -> f.channel(inputChannel())
                    .handle(Http.outboundGateway(uri).httpMethod(HttpMethod.GET).expectedResponseType(String.class))
                    .channel(outputChannel());
        }

    }

}
@SpringBootApplication(scanBasePackages="com.testsi")
@EnableIntegration
@IntegrationComponentScan
public class DemosiApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemosiApplication.class, args);
    }



        @Bean
        @Qualifier("get_send_channel")
        MessageChannel getSendChannel() {
            return MessageChannels.direct().get();
        }

        @Bean
        @Qualifier("get_receive_channel")
        PollableChannel getReceiveChannel() {
         return new PriorityChannel() ;
        }

        @Bean
        public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
            System.out.println("inside the command liner ");
            return args -> {
                Message<?> message = MessageBuilder.withPayload("").build();
                System.out.println("Message [ayload =>"+ message.getPayload());
                getSendChannel().send(message);
                System.out.println("we are getting an output from test application"+getReceiveChannel().receive().getPayload());
            };
        }

        @Bean
        public IntegrationFlow outBoundFlow() {
            System.out.println("Inside t outBoundFlow flow ");
            final String uri = "http://localhost:9090/api/test/1";
            return IntegrationFlows.from(getSendChannel())
                    .handle(Http.outboundGateway(uri).httpMethod(HttpMethod.POST).expectedResponseType(String.class))
                    .channel(getReceiveChannel()).get();
        }

        @Bean
        public IntegrationFlow outBoundFlow() {
            System.out.println("Inside t outBoundFlow flow ");
            final String uri = "http://localhost:9090/api/test";
            return IntegrationFlows.from(getSendChannel())
                    .handle(Http.outboundGateway(uri).httpMethod(HttpMethod.GET).expectedResponseType(String.class))
                    .channel(getReceiveChannel()).get();
        }
        }
配置类

@EnableIntegration
@Configuration
@Import({ AptHttp.class })
public class DemosiApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemosiApplication.class, args);
    }

}
@Configuration
@IntegrationComponentScan
public class AptHttp {

    @EnableIntegration
    public static class ContextConfiguration {

        @Bean("inputChannel")
        public MessageChannel inputChannel() {
            return MessageChannels.direct().get();
        }

        @Bean
        public MessageChannel outputChannel() {
            return MessageChannels.direct().get();
        }

        @Bean
        public IntegrationFlow outBoundFlow() {
            System.out.println("Inside t outBoundFlow flow ");
            final String uri = "http://localhost:9090/api/test";
            return f -> f.channel(inputChannel())
                    .handle(Http.outboundGateway(uri).httpMethod(HttpMethod.GET).expectedResponseType(String.class))
                    .channel(outputChannel());
        }

    }

}
@SpringBootApplication(scanBasePackages="com.testsi")
@EnableIntegration
@IntegrationComponentScan
public class DemosiApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemosiApplication.class, args);
    }



        @Bean
        @Qualifier("get_send_channel")
        MessageChannel getSendChannel() {
            return MessageChannels.direct().get();
        }

        @Bean
        @Qualifier("get_receive_channel")
        PollableChannel getReceiveChannel() {
         return new PriorityChannel() ;
        }

        @Bean
        public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
            System.out.println("inside the command liner ");
            return args -> {
                Message<?> message = MessageBuilder.withPayload("").build();
                System.out.println("Message [ayload =>"+ message.getPayload());
                getSendChannel().send(message);
                System.out.println("we are getting an output from test application"+getReceiveChannel().receive().getPayload());
            };
        }

        @Bean
        public IntegrationFlow outBoundFlow() {
            System.out.println("Inside t outBoundFlow flow ");
            final String uri = "http://localhost:9090/api/test/1";
            return IntegrationFlows.from(getSendChannel())
                    .handle(Http.outboundGateway(uri).httpMethod(HttpMethod.POST).expectedResponseType(String.class))
                    .channel(getReceiveChannel()).get();
        }

        @Bean
        public IntegrationFlow outBoundFlow() {
            System.out.println("Inside t outBoundFlow flow ");
            final String uri = "http://localhost:9090/api/test";
            return IntegrationFlows.from(getSendChannel())
                    .handle(Http.outboundGateway(uri).httpMethod(HttpMethod.GET).expectedResponseType(String.class))
                    .channel(getReceiveChannel()).get();
        }
        }
只有两个以上的班级。当我运行SI应用程序时,我也没有收到任何错误(sysout正在打印,但没有调用,我不知道为什么)。我有另一个应用程序,我可以通过spring集成代码获得一些API,我正在尝试使用该API方法。为了理解HTTP出站网关的流程,我尝试这样做

有人能帮我一下吗?

您没有显示(或没有)将消息发送到
输入频道的代码

Http.outboundGateway()
不是活动组件,其工作必须由请求消息触发

Spring应用程序上下文中还有两个主要阶段:bean创建和运行时。 所以,您可以在bean创建阶段看到
System.out.println()
。当真正发生HTTP发送时,它与运行时无关

因此,在创建和启动应用程序上下文(
SpringApplication.run(DemosiApplication.class,args);
)之后,您需要获取一个
inputChannel
bean并向其中发送一条
消息。只有在这之后,才会触发HTTP出站网关

查看示例中的更多信息:

您没有显示(或没有)将消息发送到
输入通道的代码

Http.outboundGateway()
不是活动组件,其工作必须由请求消息触发

Spring应用程序上下文中还有两个主要阶段:bean创建和运行时。 所以,您可以在bean创建阶段看到
System.out.println()
。当真正发生HTTP发送时,它与运行时无关

因此,在创建和启动应用程序上下文(
SpringApplication.run(DemosiApplication.class,args);
)之后,您需要获取一个
inputChannel
bean并向其中发送一条
消息。只有在这之后,才会触发HTTP出站网关


请参阅示例中的更多信息:

我正在与那些正在寻找使用JavaDSL的HTTP出站网关示例的人分享我的答案

主类

@EnableIntegration
@Configuration
@Import({ AptHttp.class })
public class DemosiApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemosiApplication.class, args);
    }

}
@Configuration
@IntegrationComponentScan
public class AptHttp {

    @EnableIntegration
    public static class ContextConfiguration {

        @Bean("inputChannel")
        public MessageChannel inputChannel() {
            return MessageChannels.direct().get();
        }

        @Bean
        public MessageChannel outputChannel() {
            return MessageChannels.direct().get();
        }

        @Bean
        public IntegrationFlow outBoundFlow() {
            System.out.println("Inside t outBoundFlow flow ");
            final String uri = "http://localhost:9090/api/test";
            return f -> f.channel(inputChannel())
                    .handle(Http.outboundGateway(uri).httpMethod(HttpMethod.GET).expectedResponseType(String.class))
                    .channel(outputChannel());
        }

    }

}
@SpringBootApplication(scanBasePackages="com.testsi")
@EnableIntegration
@IntegrationComponentScan
public class DemosiApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemosiApplication.class, args);
    }



        @Bean
        @Qualifier("get_send_channel")
        MessageChannel getSendChannel() {
            return MessageChannels.direct().get();
        }

        @Bean
        @Qualifier("get_receive_channel")
        PollableChannel getReceiveChannel() {
         return new PriorityChannel() ;
        }

        @Bean
        public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
            System.out.println("inside the command liner ");
            return args -> {
                Message<?> message = MessageBuilder.withPayload("").build();
                System.out.println("Message [ayload =>"+ message.getPayload());
                getSendChannel().send(message);
                System.out.println("we are getting an output from test application"+getReceiveChannel().receive().getPayload());
            };
        }

        @Bean
        public IntegrationFlow outBoundFlow() {
            System.out.println("Inside t outBoundFlow flow ");
            final String uri = "http://localhost:9090/api/test/1";
            return IntegrationFlows.from(getSendChannel())
                    .handle(Http.outboundGateway(uri).httpMethod(HttpMethod.POST).expectedResponseType(String.class))
                    .channel(getReceiveChannel()).get();
        }

        @Bean
        public IntegrationFlow outBoundFlow() {
            System.out.println("Inside t outBoundFlow flow ");
            final String uri = "http://localhost:9090/api/test";
            return IntegrationFlows.from(getSendChannel())
                    .handle(Http.outboundGateway(uri).httpMethod(HttpMethod.GET).expectedResponseType(String.class))
                    .channel(getReceiveChannel()).get();
        }
        }
@SpringBootApplication(scanBasePackages=“com.testsi”)
@使能集成
@集成组件扫描
公共类演示应用程序{
公共静态void main(字符串[]args){
run(DemosiApplication.class,args);
}
@豆子
@限定符(“获取\发送\通道”)
MessageChannel getSendChannel(){
返回MessageChannels.direct().get();
}
@豆子
@限定符(“获取\接收\通道”)
PollableChannel getReceiveChannel(){
返回新的PriorityChannel();
}
@豆子
公共命令行运行程序命令行运行程序(ApplicationContext ctx){
System.out.println(“在命令行内”);
返回参数->{
Message Message=MessageBuilder.withPayload(“”.build();
System.out.println(“Message[ayload=>”+Message.getPayload());
getSendChannel().send(消息);
println(“我们正在从测试应用程序获得输出”+getReceiveChannel().receive().getPayload());
};
}
@豆子
公共集成流outBoundFlow(){
System.out.println(“内部t外部流”);
最终字符串uri=”http://localhost:9090/api/test/1";
从(getSendChannel())返回IntegrationFlows.from
.handle(Http.outboundGateway(uri).httpMethod(httpMethod.POST).expectedResponseType(String.class))
.channel(getReceiveChannel()).get();
}
@豆子
公共集成流outBoundFlow(){
System.out.println(“内部t外部流”);
最终字符串uri=”http://localhost:9090/api/test";
从(getSendChannel())返回IntegrationFlows.from
.handle(Http.outboundGateway(uri).httpMethod(httpMethod.GET).expectedResponseType(String.class))
.channel(getReceiveChannel()).get();
}
}

感谢@Artem Bilan。

我正在与那些正在寻找使用java DSL的HTTP出站网关示例的人分享我的答案

主类

@EnableIntegration
@Configuration
@Import({ AptHttp.class })
public class DemosiApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemosiApplication.class, args);
    }

}
@Configuration
@IntegrationComponentScan
public class AptHttp {

    @EnableIntegration
    public static class ContextConfiguration {

        @Bean("inputChannel")
        public MessageChannel inputChannel() {
            return MessageChannels.direct().get();
        }

        @Bean
        public MessageChannel outputChannel() {
            return MessageChannels.direct().get();
        }

        @Bean
        public IntegrationFlow outBoundFlow() {
            System.out.println("Inside t outBoundFlow flow ");
            final String uri = "http://localhost:9090/api/test";
            return f -> f.channel(inputChannel())
                    .handle(Http.outboundGateway(uri).httpMethod(HttpMethod.GET).expectedResponseType(String.class))
                    .channel(outputChannel());
        }

    }

}
@SpringBootApplication(scanBasePackages="com.testsi")
@EnableIntegration
@IntegrationComponentScan
public class DemosiApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemosiApplication.class, args);
    }



        @Bean
        @Qualifier("get_send_channel")
        MessageChannel getSendChannel() {
            return MessageChannels.direct().get();
        }

        @Bean
        @Qualifier("get_receive_channel")
        PollableChannel getReceiveChannel() {
         return new PriorityChannel() ;
        }

        @Bean
        public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
            System.out.println("inside the command liner ");
            return args -> {
                Message<?> message = MessageBuilder.withPayload("").build();
                System.out.println("Message [ayload =>"+ message.getPayload());
                getSendChannel().send(message);
                System.out.println("we are getting an output from test application"+getReceiveChannel().receive().getPayload());
            };
        }

        @Bean
        public IntegrationFlow outBoundFlow() {
            System.out.println("Inside t outBoundFlow flow ");
            final String uri = "http://localhost:9090/api/test/1";
            return IntegrationFlows.from(getSendChannel())
                    .handle(Http.outboundGateway(uri).httpMethod(HttpMethod.POST).expectedResponseType(String.class))
                    .channel(getReceiveChannel()).get();
        }

        @Bean
        public IntegrationFlow outBoundFlow() {
            System.out.println("Inside t outBoundFlow flow ");
            final String uri = "http://localhost:9090/api/test";
            return IntegrationFlows.from(getSendChannel())
                    .handle(Http.outboundGateway(uri).httpMethod(HttpMethod.GET).expectedResponseType(String.class))
                    .channel(getReceiveChannel()).get();
        }
        }
@SpringBootApplication(scanBasePackages=“com.testsi”)
@使能集成
@集成组件扫描
公共类演示应用程序{
公共静态void main(字符串[]args){
run(DemosiApplication.class,args);
}
@豆子
@限定符(“获取\发送\通道”)
MessageChannel getSendChannel(){
返回MessageChannels.direct().get();
}
@豆子
@限定符(“获取\接收\通道”)
PollableChannel getReceiveChannel(){
返回新的PriorityChannel();
}
@豆子
公共命令行运行程序命令行运行程序(ApplicationContext ctx){
System.out.println(“在命令行内”);
返回参数->{
Message Message=MessageBuilder.withPayload(“”.build();
System.out.println(“Message[ayload=>”+Message.getPayload());
getSendChannel().send(消息);
println(“我们正在从测试应用程序获得输出”+getReceiveChannel().receive().getPayload());
};
}
@豆子
公共集成流outBoundFlow(){
System.out.println(“内部t外部流