对于最新的稳定版本,请使用 Spring AMQP 3.2.0! |
添加自定义HandlerMethodArgumentResolver
至 @RabbitListener
从版本 2.3.7 开始,您可以添加自己的HandlerMethodArgumentResolver
并解析自定义方法参数。
您只需实施RabbitListenerConfigurer
和使用方法setCustomMethodArgumentResolvers()
来自类RabbitListenerEndpointRegistrar
.
@Configuration
class CustomRabbitConfig implements RabbitListenerConfigurer {
@Override
public void configureRabbitListeners(RabbitListenerEndpointRegistrar registrar) {
registrar.setCustomMethodArgumentResolvers(
new HandlerMethodArgumentResolver() {
@Override
public boolean supportsParameter(MethodParameter parameter) {
return CustomMethodArgument.class.isAssignableFrom(parameter.getParameterType());
}
@Override
public Object resolveArgument(MethodParameter parameter, org.springframework.messaging.Message<?> message) {
return new CustomMethodArgument(
(String) message.getPayload(),
message.getHeaders().get("customHeader", String.class)
);
}
}
);
}
}