java - Spring集成消息历史记录

标签 java spring-integration spring-integration-dsl

我已经设置了@EnableMessageHistory

我创建了这样的自定义变压器

public class FileMoveTransformer implements GenericTransformer<CustomerPojo, CustomerPojo> {
    private boolean renameFile;
    private String toLocation;
    private static final Logger LOGGER = LoggerFactory.getLogger(FileMoveTransformer.class);


    public FileMoveTransformer(String toLocation, final boolean renameFile) {
        this.toLocation = toLocation;
        this.renameFile = renameFile;
    }


    @Override
    public CustomerPojo transform(CustomerPojo input) {

    return input;

    }

}

当我查看消息历史记录时,它显示如下

enter image description here

如何将“名称”属性更改为我自己的变压器,如上所述,打印没有意义。

最佳答案

MessageHistory根据 bean 名称进行设置:

private static Properties extractMetadata(NamedComponent component) {
    Entry entry = new Entry();
    String name = component.getComponentName();
    String type = component.getComponentType();
    if (name != null && !name.startsWith("org.springframework.integration")) {
        entry.setName(name);
        if (type != null) {
            entry.setType(type);
        }
    }
    if (!entry.isEmpty()) {
        entry.setTimestamp(Long.toString(System.currentTimeMillis()));
    }
    return entry;
}

由于您没有提供明确的 id对于使用您的 FileMoveTransformer 的端点,您可以根据端点 ConsumerEndpointFactoryBean 获取生成的 bean 名称类。

因为你没有展示如何使用这个FileMoveTransformer ,我只能滥用猜测它是关于 IntegrationFlow你有这样的东西:

.transform(new FileMoveTransformer())

因此,考虑添加 id那里像:

.transform(new FileMoveTransformer(), e -> e.id("fileMoveTransformer"))

https://docs.spring.io/spring-integration/reference/html/java-dsl.html#java-dsl-endpoints

否则,请分享您如何使用它,我们会让您知道需要更改哪些内容才能为组件带来您自己的自定义 ID 并使您的消息历史记录更易于阅读。

关于java - Spring集成消息历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53818670/

相关文章:

java - exec-maven-plugin 错误...可以编译,但无法运行项目

java - 如何声明两个出站 channel 适配器来发布不同的消息

java - 如何在 spring 集成中获取发件人 IP 地址?

java - 通过 .handle() 配置服务激活器的输出 channel

java - 如何为 Spring Integration SFTP 入站适配器动态定义文件过滤器模式?

java - 如何使用递归树估计生成字符串排列的时间复杂度

java - Spring Boot 中使用 3 个表进行 Hibernate 映射的问题

java - 在java中如果我们在创建它的对象时定义了一个类,那么这个类叫什么?

java - 如何在 Spring 中解析 XML 消息负载?

java - <int :gateway xml tag in java DSL in spring - integration? 的模拟是什么