跳到主要内容

向 @RabbitListener 添加自定义 HandlerMethodArgumentResolver

DeepSeek V3 中英对照 Adding a Custom HandlerMethodArgumentResolver to @RabbitListener Adding a Custom HandlerMethodArgumentResolver to @RabbitListener

从 2.3.7 版本开始,你可以添加自己的 HandlerMethodArgumentResolver 并解析自定义的方法参数。你只需要实现 RabbitListenerConfigurer 并使用 RabbitListenerEndpointRegistrar 类中的 setCustomMethodArgumentResolvers() 方法即可。

@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)
);
}

}
);
}

}
java