回复后我能收到原始消息吗
Can I get original message after response
你能帮我 spring 集成吗?
我有使用 http 向其他系统发送 post 请求的集成流程。
发送后能否得到原始消息,因为我想在成功和错误时做其他操作
ErrorHandler只有HttpClientResponse,但是响应体是空的,我需要originalMessage来处理这种情况。
同样的情况,成功响应。没有原始消息信息无法进行下一步操作
@Configuration
public class IntegrationConfiguration {
@Bean
public IntegrationFlow incChannel(HeaderEnricher enrichHeaders,
HttpRequestExecutingMessageHandler notifyOnArrival) {
return IntegrationFlows
.from("send_notify_to")
.transform(enrichHeaders)
.handle(notifyOnArrival)
.channel("save_success_status_original")
.get();
}
@Bean
public HeaderEnricher enrichHeaders() {
Map<String, ? extends HeaderValueMessageProcessor<?>> headersToAdd =
Collections.singletonMap("Content-Type", new StaticHeaderValueMessageProcessor<>(APPLICATION_JSON_VALUE));
HeaderEnricher enricher = new HeaderEnricher(headersToAdd);
return enricher;
}
@Bean
HttpRequestExecutingMessageHandler notifyOnArrival(@Value("${uri}") String uri,
MappingJackson2HttpMessageConverter messageConverter) {
HttpRequestExecutingMessageHandler handler =
new HttpRequestExecutingMessageHandler(uri + "/api/notify");
handler.setHttpMethod(HttpMethod.POST);
handler.setExpectReply(false);
handler.setMessageConverters(Arrays.asList(messageConverter));
return handler;
}
}
.handle(notifyOnArrival)
只是一个服务激活器,包含从请求到回复的所有状态。我们只需要确保我们真正提供那种状态。在消息上下文中保持状态的最佳位置是将请求消息存储到 headers 中,然后在之后的回复中或从 ErrorMessage
.
中恢复它
headersToAdd.put("originalMesasge", new ExpressionEvaluatingHeaderValueMessageProcessor("#root", Message.class));
因此,您从请求消息中添加 originalMesasge
,并且服务激活器逻辑会将此消息复制到回复消息中。
你能帮我 spring 集成吗?
我有使用 http 向其他系统发送 post 请求的集成流程。
发送后能否得到原始消息,因为我想在成功和错误时做其他操作
ErrorHandler只有HttpClientResponse,但是响应体是空的,我需要originalMessage来处理这种情况。
同样的情况,成功响应。没有原始消息信息无法进行下一步操作
@Configuration
public class IntegrationConfiguration {
@Bean
public IntegrationFlow incChannel(HeaderEnricher enrichHeaders,
HttpRequestExecutingMessageHandler notifyOnArrival) {
return IntegrationFlows
.from("send_notify_to")
.transform(enrichHeaders)
.handle(notifyOnArrival)
.channel("save_success_status_original")
.get();
}
@Bean
public HeaderEnricher enrichHeaders() {
Map<String, ? extends HeaderValueMessageProcessor<?>> headersToAdd =
Collections.singletonMap("Content-Type", new StaticHeaderValueMessageProcessor<>(APPLICATION_JSON_VALUE));
HeaderEnricher enricher = new HeaderEnricher(headersToAdd);
return enricher;
}
@Bean
HttpRequestExecutingMessageHandler notifyOnArrival(@Value("${uri}") String uri,
MappingJackson2HttpMessageConverter messageConverter) {
HttpRequestExecutingMessageHandler handler =
new HttpRequestExecutingMessageHandler(uri + "/api/notify");
handler.setHttpMethod(HttpMethod.POST);
handler.setExpectReply(false);
handler.setMessageConverters(Arrays.asList(messageConverter));
return handler;
}
}
.handle(notifyOnArrival)
只是一个服务激活器,包含从请求到回复的所有状态。我们只需要确保我们真正提供那种状态。在消息上下文中保持状态的最佳位置是将请求消息存储到 headers 中,然后在之后的回复中或从 ErrorMessage
.
headersToAdd.put("originalMesasge", new ExpressionEvaluatingHeaderValueMessageProcessor("#root", Message.class));
因此,您从请求消息中添加 originalMesasge
,并且服务激活器逻辑会将此消息复制到回复消息中。