как отправить частичные атрибуты данных источника в разные цели - PullRequest
0 голосов
/ 19 апреля 2020

Я строю интеграцию между источником и двумя целями, здесь объект исходных данных имеет 10 атрибутов, из которых одной цели нужно около 6 атрибутов, а другой цели нужно только 4 атрибута, благодарю вас за любую помощь в том, как я могу достичь с помощью Spring

1 Ответ

2 голосов
/ 19 апреля 2020

Вы можете настроить источник для отправки сообщения на PublishSubscribeChannel.

Затем настройте два Transformers для подписки на этот паб-субканал. Один из преобразователей преобразует сообщение в версию с 6 атрибутами, а другой - в версию с 4 атрибутами. Затем оба преобразователя будут отправлять преобразованные сообщения в отдельный канал. Две целевые системы будут искать сообщения, отправленные на эти разделенные каналы, и обрабатывать их.

С точки зрения конфигурации аннотации это выглядит следующим образом: (Предполагается, что сообщение, которое отправил источник, Foo)

    @Bean
    public MessageChannel pubSubChannel() {
        return new PublishSubscribeChannel();
    }

    @Bean
    public MessageChannel outputChannelWith4Attributes() {
        return new DirectChannel();
    }

    @Bean
    public MessageChannel outputChannelWith6Attributes() {
        return new DirectChannel();
    }


    @Component 
    public class MyTransformer {

        @Transformer(inputChannel = "pubSubChannel", outputChannel = "outputChannelWith4Attributes")
        public Foo transformTo4Attribute(Foo foo) {
            //do the transformation logic here
            return result;
        }

        @Transformer(inputChannel = "pubSubChannel", outputChannel = "outputChannelWith6Attributes")
        public Foo transformTo6Attribute(Foo foo) {
            //do the transformation logic here
            return result;
        }
    }

И настройте источник для отправки сообщения с полезной нагрузкой. Foo до pubSubChannel. Также настройте цели для обработки сообщений от outputChannelWith4Attributes и outputChannelWith6Attributes.

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