Отфильтровать заголовки сообщения AMQP во входящем адаптере AMQP

Учитывая, что у меня IntegrationFlow:

IntegrationFlows.from(
    Amqp.inboundAdapter(rabbitConnectionFactory, NTF_INCOMING_CMSF_EVENT_QUEUE)
            .messageConverter(new Jackson2JsonMessageConverter(jacksonObjectMapper))
)
    .get()

Я хочу применить HeaderFilter к входящему адаптеру AMQP, но, похоже, я смогу сделать это только позже в конвейере.

Можно ли фильтровать заголовки во входящем адаптере?


person Patrik Mihalčin    schedule 09.10.2020    source источник


Ответы (1)


Это возможно, но это уже называется HeaderMapper.

Посмотрите эти варианты этого Amqp.inboundAdapter():

/**
 * Configure the adapter's {@link AmqpHeaderMapper};
 * defaults to {@link DefaultAmqpHeaderMapper}.
 * @param headerMapper the headerMapper.
 * @return the spec.
 */
public S headerMapper(AmqpHeaderMapper headerMapper) {
    this.target.setHeaderMapper(headerMapper);
    return _this();
}

/**
 * Only applies if the default header mapper is used.
 * @param headers the headers.
 * @return the spec.
 * @see DefaultAmqpHeaderMapper#setRequestHeaderNames(String[])
 */
public S mappedRequestHeaders(String... headers) {

Для получения дополнительных сведений см. DefaultAmqpHeaderMapper JavaDocs и соответствующее справочное руководство: https://docs.spring.io/spring-integration/docs/5.3.2.RELEASE/reference/html/amqp.html#amqp-message-headers

Итак, вероятно, вам понадобится оператор отрицания (!) в шаблонах имен заголовков.

person Artem Bilan    schedule 09.10.2020