Http出站网关正在工作,但没有进行调用-使用spring integration DSL java
我是spring集成框架的新手。下面是我的代码,我实际上正在尝试使用HTTP出站网关和SI DSL配置进行一些HTTP调用。当我运行代码时,调用了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
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外部流