Spring-AMQP - маршрутизация на основе заголовков сообщений - PullRequest
0 голосов
/ 13 апреля 2020

В соответствии с документацией: https://docs.spring.io/spring-amqp/docs/2.2.5.RELEASE/reference/html/#async на основе аннотаций

У нас могут быть разные обработчики сообщений, основанные на преобразованном типе класса, например:

@RabbitListener(id="multi", queues = "someQueue")
@SendTo("my.reply.queue")
public class MultiListenerBean {

    @RabbitHandler
    public String thing2(Thing2 thing2) {
        ...
    }

    @RabbitHandler
    public String cat(Cat cat) {
        ...
    }

    @RabbitHandler
    public String hat(@Header("amqp_receivedRoutingKey") String rk, @Payload Hat hat) {
        ...
    }

    @RabbitHandler(isDefault = true)
    public String defaultMethod(Object object) {
        ...
    }

}

Я полагаю, что это не будет большой производительностью, поскольку для приведения входящей полезной нагрузки необходимо выполнить метод проб и ошибок.

Вместо этого, как фильтровать на основе условия, скажем, значение заголовка? Если header ['operation'] = "order", тогда приведите полезную нагрузку сообщения к классу Order.

1 Ответ

0 голосов
/ 13 апреля 2020

Я полагаю, что это не будет большой производительностью, поскольку для приведения входящей полезной нагрузки необходимо выполнить метод проб и ошибок.

Обычно информация о типе передается в заголовках и MessageConverter использует эту информацию для создания полезной нагрузки - "проб и ошибок" не существует.

Если вы не используете один из поставляемых преобразователей, вы можете создать свой собственный, основываясь на header['operation'].

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