Интеграция Spring — разница между AmqpOutboundEndpoint и RabbitTemplate

Я пытаюсь написать свой первый издатель AMQP через интеграцию Spring, используя экземпляр AmqpOutboundEndpoint.

  1. Я не понимаю, в чем разница между RabbitTemplate и AmqpOutboundEndPoint, поскольку AmqpOutboundEndpoint использует экземпляр RabbitTemplate.

  2. Я хотел бы использовать шлюз AMQP для разделения 2 разных компонентов моего приложения (бизнес-компонент и компонент интеграции). Допустимо ли использовать AqmpOutboundEndPoint для публикации сообщения, когда мне нужно переключить ключ маршрутизации в соответствии с типом опубликованного сообщения? Все примеры, которые я нашел в Интернете, используют жестко закодированный ключ маршрутизации для шлюза AMQP.

Спасибо


person Yoni    schedule 22.07.2017    source источник


Ответы (1)


Что ж, добро пожаловать в Шаблоны корпоративной интеграции

Итак, во-первых, вы правы, AmqpOutboundEndpoint действительно полностью основан на RabbitTemplate, потому что это хорошая реализация для отправки сообщений через AMQP.

С другой стороны, конечная точка — это адаптер канала для получения сообщений через внутренний канал интеграции.

Таким образом, вы должны решить для себя, действительно ли вам нужно все интеграционное решение или достаточно просто отправить на AMQP из вашего собственного кода.

Эта конечная точка позволяет вам определить routingKey во время выполнения по запросуMessage с использованием SpEL.

См. документацию по этому вопросу: http://docs.spring.io/spring-integration/docs/4.3.11.RELEASE/reference/html/amqp.html#amqp-inbound-ack

person Artem Bilan    schedule 22.07.2017
comment
Есть ли преимущество в том, чтобы построить шлюз и напрямую отметить RabbitTemplate? больше гибкости или что-то еще? Как вы говорите, производитель и потребитель — это моя система, это внутренняя интеграция. - person Yoni; 22.07.2017
comment
Если вы не создаете приложение Spring Integration, я не вижу причин ломать вам голову дополнительным кодом. Прямое использование RabbitTemplate и через шлюз действительно для разных задач и решений. Если вы не чувствуете, что вам нужна Spring Integration в вашем проекте, не тратьте время на то, чтобы понять разницу и преимущества - person Artem Bilan; 22.07.2017