【问题标题】:Filter out headers of AMQP message in AMQP inbound adapter在 AMQP 入站适配器中过滤掉 AMQP 消息的标头
【发布时间】:2020-10-09 17:54:37
【问题描述】:
鉴于我有IntegrationFlow:
IntegrationFlows.from(
Amqp.inboundAdapter(rabbitConnectionFactory, NTF_INCOMING_CMSF_EVENT_QUEUE)
.messageConverter(new Jackson2JsonMessageConverter(jacksonObjectMapper))
)
.get()
我想将HeaderFilter 应用到 AMQP 入站适配器,但我似乎只能在管道的后期进行。
是否可以过滤入站适配器中的标头?
【问题讨论】:
标签:
spring-integration
spring-integration-dsl
spring-integration-amqp
【解决方案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
所以,您可能需要的是一个针对标头名称模式的否定运算符 (!)。