Spring 集成消息历史记录
Spring Integration Message History
我已经设置好@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;
}
}
当我查看消息历史记录时,它显示如下
如何将 "name" 属性更改为我自己的转换器,因为上面的打印没有意义。
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;
}
由于您没有为使用您的 FileMoveTransformer
的端点提供明确的 id
,您将根据端点 ConsumerEndpointFactoryBean
class 获得生成的 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,并使您的消息历史记录更具可读性。
我已经设置好@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;
}
}
当我查看消息历史记录时,它显示如下
如何将 "name" 属性更改为我自己的转换器,因为上面的打印没有意义。
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;
}
由于您没有为使用您的 FileMoveTransformer
的端点提供明确的 id
,您将根据端点 ConsumerEndpointFactoryBean
class 获得生成的 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,并使您的消息历史记录更具可读性。