История сообщений Spring Integration - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть настройки @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

Как изменить атрибут "name" на свой собственный преобразователь, как указано выше, печатать не имеет смысла.

1 Ответ

0 голосов
/ 17 декабря 2018

MessageHistory делает его на основе имени компонента:

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 class.

Поскольку вы не показываете, как вы используете это 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

В противном случае, пожалуйста, поделитесь, как вы его используете, и мыпозволит вам узнать, что нужно изменить, чтобы добавить свой собственный идентификатор для компонента и сделать историю сообщений более читабельной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...