使用 Java DSL 的 Messaging Gateway 回复通道
Reply Channel for Messaging Gateway using Java DSL
我有一个 REST API,它接收来自客户端应用程序的 POST 请求。
@Autowired
private EdiTranslationEvents.TransformToString transformToString;
@PostMapping("/testPost")
@ResponseStatus(HttpStatus.OK)
public String testPostLogging(@RequestBody Student student) {
log.info("In controller....");
System.out.println(this.transformToString.objectToInputGateway(student));
return "testPost logging";
}
如您所见,在控制器中,我有一个自动连接的消息传递网关,我正在使用它向通道发送数据。
@Configuration
@EnableIntegration
public class EdiTranslationEvents {
@Component
@MessagingGateway
public interface TransformToString {
@Gateway(requestChannel = "inputObjectChannel")
String objectToInputGateway(Student student);
}
@Bean
public IntegrationFlow inputObjectString() {
return IntegrationFlows.from(inputObjectChannel())
.transform(Transformers.objectToString())
.log(LoggingHandler.Level.DEBUG, "com.dash.Logger")
.get();
}
}
当我向 REST API 发送数据时,API 只是挂起。网关没有 return 任何东西。我指定了 return 类型,我假设网关创建了一个临时回复通道并将响应发送到该通道。
但是,我没有在创建或管理回复的 DSL 配置中做任何事情。那么,如何从 DSL 流将回复发送回回复通道?
您当前的流程没有 return 值,您只是在记录消息。
终止 .log()
流程结束。
删除 .log()
元素,这样转换的结果将自动路由回网关。
或者在日志后添加一个.bridge()
(无处可去的桥梁),它将输出桥接到回复通道。
我有一个 REST API,它接收来自客户端应用程序的 POST 请求。
@Autowired
private EdiTranslationEvents.TransformToString transformToString;
@PostMapping("/testPost")
@ResponseStatus(HttpStatus.OK)
public String testPostLogging(@RequestBody Student student) {
log.info("In controller....");
System.out.println(this.transformToString.objectToInputGateway(student));
return "testPost logging";
}
如您所见,在控制器中,我有一个自动连接的消息传递网关,我正在使用它向通道发送数据。
@Configuration
@EnableIntegration
public class EdiTranslationEvents {
@Component
@MessagingGateway
public interface TransformToString {
@Gateway(requestChannel = "inputObjectChannel")
String objectToInputGateway(Student student);
}
@Bean
public IntegrationFlow inputObjectString() {
return IntegrationFlows.from(inputObjectChannel())
.transform(Transformers.objectToString())
.log(LoggingHandler.Level.DEBUG, "com.dash.Logger")
.get();
}
}
当我向 REST API 发送数据时,API 只是挂起。网关没有 return 任何东西。我指定了 return 类型,我假设网关创建了一个临时回复通道并将响应发送到该通道。
但是,我没有在创建或管理回复的 DSL 配置中做任何事情。那么,如何从 DSL 流将回复发送回回复通道?
您当前的流程没有 return 值,您只是在记录消息。
终止 .log()
流程结束。
删除 .log()
元素,这样转换的结果将自动路由回网关。
或者在日志后添加一个.bridge()
(无处可去的桥梁),它将输出桥接到回复通道。