2016-08-26 1 views
2

Я использую Spring Integration с AMQP-поддерживаемыми сообщениями, и я предпочел бы использовать JSON вместо стандартной сериализации Java для сообщений. Это предпочтение отчасти объясняется исключениями сериализации, возникающими при использовании объектов Kotlin.Есть ли способ по умолчанию для сериализации JSON с интеграцией Spring?

При исследовании вопроса, я наткнулся на этот пост:

Spring integration - AMQP backed message channels and message conversion

Таким образом, кажется возможность использовать JSON сериализации с AMQP поддерживаемыми сообщениями только недавно поддерживается. Более того, я считаю, что проект Spring Cloud Stream обеспечивает поддержку этого подхода из коробки, но я не смог понять, как добиться чего-то подобного с SI.

Я столкнулся с сообщением, которое предоставляет средства для этого channel-by-channel, но, похоже, сложно настроить его таким образом для каждого канала, когда я просто хочу использовать его по всем направлениям.

+0

Наличие «большого количества» каналов с поддержкой amqp необычно; можете ли вы объяснить свой прецедент. –

+0

Несомненно. Я создал канал данных, где каждый шаг процесса реализован как очередь. – roborative

ответ

1

Есть ли что-то, препятствующее обновлению до 4.3?

<int-amqp:channel id="withEP" 
    extract-payload="true" message-converter="jackson" /> 

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

+0

В настоящее время я использую 4.3.1, так что это не проблема. Тем не менее, я использую подход DSL для настройки, и мне не ясно, как установить свойство полезной нагрузки extract. – roborative

+0

DSL обычно немного отстает от основной структуры - это должно измениться в 5.0, когда мы объединим DSL в основной проект. Тем временем я открыл [проблему для DSL] (https://github.com/spring-projects/spring-integration-java-dsl/issues/107). –

+0

Спасибо, Гэри. Тем временем можно было бы сделать что-то подобное? '@Bean public IntegrationFlow transformFlow() { return IntegrationFlows.from (" input ") .transform (Transformers.toJson()) .get(); } 'То есть, могу ли я использовать трансформатор, чтобы обойти проблемы сериализации? – roborative

Смежные вопросы