如何将ID设置为HTTP入站网关(DSL风格)



在我的Spring Boot应用程序中,我有以下入站门路(Java DSL):

@Bean
    public IntegrationFlow upperCaseFlow() {
        return IntegrationFlows
                .from(
                        Http.inboundGateway("/conversions/upperCase")
                        .requestMapping(r -> r.methods(HttpMethod.POST).consumes("text/plain"))
                        .requestPayloadType(String.class)
                        .id("upperCaseGateway")
                )
                .<String>handle((p, h) -> p.toUpperCase())
                .get();
    }

.id(" uppercasegateway"),我认为是" ID" 的部分。

另一方面,我试图以略有不同的DSL样式实现另一个HTTP入站网关,如下所示:

@Bean
    public IntegrationFlow httpGetFlow() {
        return IntegrationFlows.from(httpGetGate()).channel("httpGetChannel").handle("personEndpoint", "get").get();
    }
@Bean
    public MessagingGatewaySupport httpGetGate() {
        HttpRequestHandlingMessagingGateway handler = new HttpRequestHandlingMessagingGateway();
        handler.setRequestMapping(createMapping(new HttpMethod[]{HttpMethod.GET}, "/persons/{personId}"));
        handler.setPayloadExpression(parser().parseExpression("#pathVariables.personId"));
        handler.setHeaderMapper(headerMapper());
        return handler;
    }
@Bean
    public HeaderMapper<HttpHeaders> headerMapper() {
        return new DefaultHttpHeaderMapper();
    }

我的问题:在创建HTTP入站网关的第二个样式中,如何将ID设置为具有" getPersonSgateway "的值的网关?我看到以第一个样式的方式,使用简单的 .id(" uppercasegateway") call。

是可能的。

任何指导都将不胜感激!

真诚的,Bharath

id只是一个bean名称;对于复合组件(消费者),它是消费者端点bean名称,消息处理程序获取<id>.handler

对于简单的消息驱动组件,例如HTTP入站适配器,它只是bean名称。因此,适当地命名您的豆子。

@Bean("upperCaseGateway")
public MessagingGatewaySupport httpGetGate() {

或,简单地

@Bean
public MessagingGatewaySupport upperCaseGateway() {

相关内容

  • 没有找到相关文章

最新更新