当前位置: 首页 > 知识库问答 >
问题:

Spring集成超文本传输协议入站网关参数

林意蕴
2023-03-14

我有一个SpringBoot 2.2.6应用程序,我想设置一个带有spring-集成的endpoint,因此我有以下配置:

@Bean
public MessageChannel reply() {
    return new DirectChannel();
}

@Bean
public IntegrationFlow inbound(TestTransformer testTransformer) {
    return IntegrationFlows.from(Http.inboundGateway("/foo")
            .requestMapping(m -> m.methods(HttpMethod.GET))
            .replyChannel("reply")
            .requestPayloadType(String.class))
            .channel("httpRequest")
            .get();
}

@Bean
@ServiceActivator(inputChannel = "httpRequest", outputChannel = "reply")
public Function<Message<?>, String> handler() {
    return new Function<Message<?>, String>() {
        public String apply(Message<?> message) throws MessagingException {
            log.info("myHandler: " + message.getPayload());
            log.info("myHandler: " + message.getHeaders());
            return "ok";
        }
    };
}

现在,如果我调用enpoint传递参数为http://localhost:8080/MyApp/foo?q=test

可以在MVC中接收类似@PathVariable的内容,例如编写:

return IntegrationFlows.from(Http.inboundGateway("/foo/{name}")

我已经试过了,但没有成功,我找不到任何文档讨论过这一点(至少在JavaBean配置中是这样)

谢谢


共有1个答案

余靖
2023-03-14

也许:

@Bean
public IntegrationFlow test(TestTransformer testTransformer, Jackson2JsonObjectMapper obj) {
    return IntegrationFlows.from(Http.inboundGateway("/foo/{name}")
            .requestMapping(m -> m.methods(HttpMethod.GET))
            .payloadExpression("#pathVariables.name")
            .replyChannel("reply")
            .requestPayloadType(String.class))
            .transform(testTransformer)
            .transform(new ObjectToJsonTransformer(obj))
            .channel("httpRequest")
            .get();
}

更有用。。。文档中充满了xml配置,我阅读了它,但我无法将它们全部转换为java DSL

 类似资料:
  • 有多台服务器正在监听actiemq。链被配置为进行超文本传输协议[出站网关]调用。假设其中一台服务器接收消息,如果超文本传输协议调用因某种原因失败,则介于两者之间。消息应该放回队列,以便另一台服务器可以接收消息并进行处理。这可以使用Spring集成来实现吗?我在Transaction上读了很多,但是找不到可行的方法。

  • 我有一个集成流程,我从jms通道读取消息,并使用http-outbound-gateway通过REST api调用发送它们。现在,当我收到一个5xx Http服务器错误时,我希望记录服务的URL以及响应消息。 我看到实例已经记录了URL并调用了一个,它可以是一个自定义实现。 我的问题是:只接收作为参数,我无法知道来自该实例的URL。我需要的是记录服务器错误,例如:“错误URL-响应...” 我该怎

  • 我正在使用GWT和Spring controller来管理http流量。有些请求可能需要很长时间,但我希望在超过给定时间时终止请求。 我如何配置超时Spring。我也使用Apache Tomcat 7.0。我试图在tomcat上inrease最大线程,但有一段时间tomcat工作缓慢,因为请求线程不会死。

  • 我想知道你对这个概念的看法/意见。如果有替代方案?这是否可行/有益? 据我所知,对于每个http请求,服务器都会执行一些操作并返回http响应。 现在考虑任何场景,我们希望对服务器上运行的进程有更多的控制。 情景1:http请求发送- 在这里,资源被浪费了。 情况2:http请求发送- 在这里,客户端不知道服务器中运行的进程的状态。客户端必须等待,直到它获得超文本传输协议响应。 我的想法是:在初始

  • 我正在尝试使用Spring靴redis来存储其中的会话。当我按照他们的留档操作时,启动服务器时总是会出现异常。 到目前为止我做了什么:-我根据文档(单击)添加了所需的依赖项并创建了非常小的配置类= 因为我找不到错误,所以我使用gradle/maven导入了他们的示例项目并进行测试,我会得到或多或少相同的异常... 有人知道那个问题吗?

  • 我有以下curl命令,它在bash shell中运行良好 我现在想通过一个简单的网页运行这个按钮点击。这是我的Javascript 但是当我通过网页按钮点击运行这个javascript时,它给我以下错误“网络错误:500内部服务器错误-http://ec2-54-226-250-92.compute-1.amazonaws.com:8080/ocr”,我的成功()方法永远不会被调用。 正如我所说,