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

我应该如何在Spring集成中构建我的消息?

单于耘豪
2023-03-14

我有一个我编码的应用程序,我正在重构它以更好地利用 Spring 集成。应用程序处理文件的内容。

问题(如我所见)是我当前的实现传递文件而不是消息,即 Spring 集成消息


为了避免进一步滚动我自己的代码,然后我必须在以后维护它,我想知道是否有推荐的结构来构建 Spring 集成中的消息。我想知道的是,是否有一些推荐的通道组合,例如我应该使用的消息生成器

我还没有配置它的代码,但我想最终得到以下组件/进程:

>

  • 接收文件,删除文件的页眉和页脚,获取每一行并将其转换为消息

    public class ShippedBoxMessageBuilder 实现了 CustomMessageBuilder {

    @Override public Message buildMessage(String input) { ShippedBox shippedBox = (ShippedBox) ShippedBoxFactory.manufacturingShippedFile(input); return MessageBuilder.withPayload(shippedBox).build(); } ...

    邮件按类型路由到相应的处理通道

    我预期的解决方案似乎已经使它复杂化了。但是,我故意将两个任务分开 1)将文件分解为多行消息


  • 共有1个答案

    史昱
    2023-03-14

    实际上,Spring 集成中有 MessageBuilder 支持。

    此类框架的一般目的是帮助后端开发人员将其域代码与消息传递基础结构分离。最后,要使用 Spring 集成,您需要遵循 POJO 和方法调用原则。

    您可以编写自己的服务、转换器和域模型。然后你只需使用一些开箱即用的组合(例如

    我建议您阅读Spring Integration in Action一书,以获得更多有关此事的图片。

    您能解释一下直接处理 Spring 集成组件的原因吗?

    更新

    1)将文件分成多行消息

    2)将消息转换为消息

    再说一次:没有理由构建消息对象。在一些转换器(再次是 POJO)中构建新的有效负载并框架包装到其要发送的消息中就足够了。

    有效负载类型 路由器不言自明:它检查有效负载类型,但不检查消息类型。当然,有效负载也可以是消息,甚至任何标头也可以是。

    无论如何,您的构建器快照最终显示的正是普通 Spring 集成消息的创建。正如我所说:只需将一个有效载荷转换为另一个有效载荷并从某个 POJO 返回它就足够了,您将将其用作变压器参考。

     类似资料:
    • 问题内容: 我有一个我编码的应用程序,我正在对其进行重构以更好地利用Spring Integration。该应用程序处理文件的内容。 问题(如我所见)是我当前的实现通过了,而不是Spring Integration 。 为了避免进一步滚动我自己的代码(以后必须维护),我想知道在Spring Integration中是否存在用于构造Messages的推荐结构。我想知道的是,是否建议将某些建议与类似的

    • 我对Hibernate(JPA)很陌生。 正如您所看到的,当Gradle升级到5.0时,这个变通方法将会失败。 所以,我想问你我应该如何用Hibernate和Gradle构建我的代码。 根据一些SO的QA,我试图添加以下依赖项,但它不起作用。 null 错误输出如下所示(位a很长,但我不确定要解决的重要线索在哪里):

    • 我想扩展spring集成消息。我想在消息流经通道期间添加一些头值。 我阅读了MessageHeader的文档,如下所示。我怎样才能得到第三个案例的样本? 创建消息头的一种方法是使用MessageBuilder: MessageBuilder。withPayload(“foo”)。setHeader(“键1”,“值1”)。setHeader(“键2”,“值2”); 第二种选择是创建 组织。sprin

    • 我正在开发一个使用Spring Integration 5.0.1和Spring Boot 2.0.0的应用程序。RC1 目前,应用程序响应并运行一些可能需要一段时间才能完成的初始化代码。这不使用任何Spring集成组件。 我还有一些非常基本的集成流,使用JavaDSL编写,并在配置中声明为bean。 有什么方法可以推迟流何时开始消耗消息吗?我希望能够在初始化完成时手动启动它们。 配置似乎是解决方

    • 我在Tomcat中删除了war文件。 并访问http://localhost:8080/camel-example-servlet-rest-tomcat/api-docs,我得到了这个... {“apiVersion”:“1.2.3”,“swaggerVersion”:“1.2”,“api”:[{“path”:“/User”,“description”:“User rest service”}]

    • 我是詹金斯的新手,运气不太好。我正在尝试用maven构建我的spring boot应用程序。它成功地构建,直到我在调用顶级Maven目标中添加命令“clean compile package”。 构建失败。 我该如何解决这个问题?

    • 对于缓存,我使用作为提供者。假设我有这个方法: 我当然想缓存这个方法。它可以工作,但是只影响并且不影响,即使我将添加到cacheNames。当我更新Post时,它对单个post(按id)可见,而对不可见(此方法不更新缓存)。我能做些什么来不仅更新单个实体,而且更新整个集合?是否有类似的东西?

    • 我应该在中具体放入什么? 我找不到这方面的指导。