我正在尝试使用@Publisher
注释来配置集成
将方法的结果发送到我的消息系统。
另外,我需要发送有关操作类型的信息,在标题中发生( CREATED / UPDATED / DELETED ),我发现,可以使用org.springframework.integration.aop.PublisherMetadataSource
添加此逻辑,在构建消息时使用的。
我在考虑使用命名约定,例如,如果方法,来自
返回的有效负载为created
,而不是添加标题已创建等。
但是当我查看Aop代理(org.springframework.integration.aop.PublisherAnnotationAdvisor
)的构建来源时,我明白,我无法更改PublisherMetadataSource
的实现。
public PublisherAnnotationAdvisor(Class<? extends Annotation> ... publisherAnnotationTypes) {
this.publisherAnnotationTypes = new HashSet<Class<? extends Annotation>>(Arrays.asList(publisherAnnotationTypes));
PublisherMetadataSource metadataSource = new MethodAnnotationPublisherMetadataSource(this.publisherAnnotationTypes);
this.interceptor = new MessagePublishingInterceptor(metadataSource);
}
也许有人可以帮助我,我可以如何自定义它,或者添加这样的行为 到我的处理管道。
答案 0 :(得分:1)
我认为您的意思是@Publisher
而不是@Processor
。
我们应该考虑向headers
添加@Publisher
属性,以允许在已发布的消息中添加任意标头。我打开了INT-4431。
现在,您必须覆盖默认的PublisherAnnotationBeanPostProcessor
(在bean名称.internalPublisherAnnotationBeanPostProcessor
下)并使用自定义顾问程序。