Я использую асинхронный приемник сообщений в Spring-AMQP для получения сообщений. В настоящее время обрабатываются только сообщения с содержимым JSON, но у меня есть требование также обрабатывать сообщения с содержимым XML. Моя текущая реализация MessageListener
имеет внедренный MessageConverter
и использует его в onMessage(Message)
, например:
MyMessage myMessage = (MyMessage) jsonConverter.fromMessage(message);
Чтобы поддерживать разные типы контента, я, очевидно, мог бы использовать MessageProperties
для опроса заголовка типа контента и вручную выбрать конвертер для использования. Но это кажется большой работой, так как Spring должен обеспечить лучшую поддержку для этого сценария. Я надеялся найти общую реализацию MessageConverter
, которая бы сопоставляла типы содержимого с конкретными преобразователями, но, похоже, такой вещи не существует.
Является ли мой лучший вариант написать такой преобразователь делегирования? Или есть способ настроить ListenerContainer
для поддержки как асинхронного приема , так и нескольких преобразователей, которые автоматически используются по мере необходимости?