Closed
Description
My code to for batchMessage. Let me know if this is not a correct way to create BatchMessagingMessageListenerAdapter for my project.
public class CustomBatchMessagingMessageListenerAdapter extends BatchMessagingMessageListenerAdapter {
private final static String defaultMethodName = "handleMessages";
public CustomBatchMessagingMessageListenerAdapter(Object bean, Method method, MessageConverter messageConverter)
{
super(bean, null, false, null, null);
setMessageConverter(messageConverter);
HandlerAdapter adapter = createHandleAdapter(bean, method);
setHandlerAdapter(adapter);
}
public CustomBatchMessagingMessageListenerAdapter(Object bean, MessageConverter messageConverter)
{
this(bean, BeanUtils.findDeclaredMethodWithMinimalParameters(bean.getClass(), defaultMethodName),
messageConverter);
}
private HandlerAdapter createHandleAdapter(Object bean, Method method)
{
MessageHandlerMethodFactory messageHandlerMethodFactory = new DefaultMessageHandlerMethodFactory();
InvocableHandlerMethod invokerHandlerMethod = messageHandlerMethodFactory.createInvocableHandlerMethod(bean,
method);
HandlerMethodArgumentResolverComposite resolvers = new HandlerMethodArgumentResolverComposite();
resolvers.addResolver(
new org.springframework.messaging.handler.annotation.support.HeadersMethodArgumentResolver());
resolvers.addResolver(
new org.springframework.messaging.handler.annotation.support.MessageMethodArgumentResolver());
resolvers
.addResolver(new org.springframework.messaging.handler.annotation.support.PayloadMethodArgumentResolver(
new GenericMessageConverter()));
invokerHandlerMethod.setMessageMethodArgumentResolvers(resolvers);
HandlerAdapter handler = new HandlerAdapter(invokerHandlerMethod);
return handler;
}
}