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

出站/入站之间的Spring集成代码共享

高增
2023-03-14

假设您有一个具有入站HTTP接口的应用程序(我们称之为B)(需要使用HTTP)。将来,您将从几个不同的其他应用程序中调用它,但目前您只想开发一个客户端(让我们称之为)。因此,在A中,有一个出站HTTP网关:

A (outbound gateway) ---[HTTP]---> (inbound gateway) B

是否可以在这两个应用程序之间共享代码,例如HTTP API定义,如路径(例如“/你好”)、方法(GET、POST、PUT…),可能是参数/其类型/响应?如果是,如何?

我想使用JavaDSL,但我看到Http.inboundGateway("...")Http.outboundGateway("...")完全不同(例如类型),所以我不确定。理想情况下,我可以有这样的东西:

  @Bean
  public IntegrationFlow inbound() {
    return IntegrationFlows.from(apiDefinition)...
                           .get();
    ...
    ...

  @Bean
  public IntegrationFlow outbound() {
    return IntegrationFlows.from(somehwere)...
                           .handle(with(apiDefinition))
                           .get();

Api定义可以想象如下(伪代码):

apiDefinition =
  method: GET
  path:   /items/{id}
  parameters:
    id: string
  response: item

共有2个答案

郭弘盛
2023-03-14

我会在Spring靴上跑步。只是一种常规的MVC方法。如果你想在将来添加一个GUI来拥有一个前端,即使现在你只需要一个API,它也允许它具有可扩展性。然后,您可以设置endpoint,以返回任何您想要作为包含哈希映射的成功响应的数据,或者任何您想要序列化并作为HTTP响应传递回来的数据结构。如果你想开始了解spring boot的外观,可以看看我关于spring boot的一些问题。这里还有来自Baeldung的Spring Boot文档。这里还有一个spring boot项目启动程序,它允许您设置整个项目,包括依赖项、构建自动化工具等。

鞠晋
2023-03-14

好吧,听起来更像是您不想通过HTTP进行调用,因为您的客户端能够直接访问业务逻辑。在这种情况下,Spring集成中存在的最好的东西是MessageChannel抽象。因此,无论输入endpoint是什么(HTTP、JMS、Apache Kafka、JDBC等),您总是可以将它们指向同一通道,其中某些服务激活器是该通道的订阅者以执行所需的业务逻辑。

因此,为了在当前客户机中传递HTTP调用,您只需要引入一个消息通道,作为一些具有业务逻辑的集成流的输入。HTTP入站流将使用一个通道(myBusinessLogicChannel)。你的出站逻辑也一样。这样,您将有两个客户端用于同一个API:一个通过HTTP,另一个直接。

我还建议研究什么是消息传递网关,作为从客户端角度设计具有少量消息传递交互的高级API的替代方案。结果是一样的:HTTP入站流可以调用该网关。并且可以在其他最终用户代码中直接调用。

请参阅有关通道和网关的更多文档:

https://docs.spring.io/spring-integration/docs/current/reference/html/messaging-endpoints.html#gateway

 类似资料:
  • 我正在尝试将spring集成配置为向队列发送消息,然后接收消息,即非常简单的事情: 我认为解耦所必需的是在流程的两端都有一个消息网关。因此,我的第一次尝试(有效)如下所示: 其中MessageReceiverHandler()是扩展AbstractMessageHandler的bean。 所以上面我们有一个用于出站消息的消息网关。我假设我们也应该有一个用于入站消息的网关,允许我们将传入消息处理与应

  • 考虑使用Spring集成进行动态入站/出站配置。使用我们的系统的客户可能有n个,每个客户都有自己的入站FTP/webservice配置,以便将文件拉入我们的系统进行处理。同样,在处理完这些数据之后,每个客户都可以进行出站FTP/webservice配置,需要在其中推送报告(最终结果)。spring集成是否适合这种情况?如果是的话,请你推荐或指出其中的任何一个例子。Webservice包括REST和

  • 问题内容: 入站和出站通道适配器之间的根本区别是什么? 任何示例都将非常有帮助。 我已经查看过Spring文档,这种“方向性”的区别对我来说还不清楚。我支持配置了outbound-channel-adapter的应用程序,但是我发现使用 出站 标签可以直观地了解行为计数器。该适配器获取一个外部文件,然后 将其 引入应用程序中, 在 该应用程序中我们解析文件并保留数据。 这类似于这个问题,但是我想更

  • 我正在尝试构建一个集成解决方案,其中 我的outboundgateway定义为 请求工厂在哪里 快乐之路运行良好,我面临的问题是不太快乐的道路。 当Api调用返回错误响应时。转换(exetrnaldto到dto)失败,客户端获得500 我想把error resposne json也翻译成我的json 我如何处理错误情况 我的问题是: 如何处理错误。 在错误条件下如何停止流不转换 如何将状态代码从出

  • 我是Spring集成项目的新手,现在我需要用JavaDSL创建一个流并对其进行测试。我想出了这些流程。第一个应该由cron运行并调用第二个,后者调用HTTPendpoint并将XML响应转换为POJO: 现在我想测试流和模拟HTTP调用,但努力模拟HTTP处理程序,我尝试这样做: 但我总是在网上出错: mockIntegrationContext。替换信息Handlerfor(“bulkEndpo

  • 我正在将SpringBoot 2.0与Spring Integr5.0.3一起使用,并且我的HTTP. in边界网关有问题。我的目标是验证发布到网关的JSON,因为请求pojo由强制字段组成。 有没有一种简单的方法来验证pojo中的字段是否已设置?我已经测试过的是使用@NotNull-SpringValidation,但它似乎不受Spring集成的支持。 你好smoothny