我已经设置了@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;
}
}
当我查看消息历史记录时,它显示如下
如何将“名称”属性更改为我自己的变压器,如上所述,打印没有意义。
最佳答案
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/