我是 JMS 的新手,需要批处理请求以供侦听器处理。链接:http ://sleeplessinslc.blogspot.in/2010/04/batchmessagelistenercontainer-using.html提供了一个很好的解决方案。我坚持执行相同的操作。我没有使用默认容器,而是重写了容器类以使用这个新类:
<jms:listener-container container-class="org.bsnyder.spring.jms.listener.BatchMessageListenerContainer"
acknowledge="transacted">
<jms:listener destination="CHANDRA.BATCHTEST" ref="messageListener" />
</jms:listener-container>
<bean id="messageListener" class="org.bsnyder.spring.jms.listener.BatchMessageListener" />
这里 BatchMessageListener 正在扩展博客中提到的 SessionAwareBatchMessageListener。
我得到的错误是:
[ERROR] PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'messageListener' threw exception;
nested exception is java.lang.IllegalArgumentException: Message listener needs to be of type [org.bsnyder.spring.jms.listener.SessionAwareBatchMessageListener]:
Failed properties: Property 'messageListener' threw exception; nested exception is java.lang.IllegalArgumentException: Message listener needs to be of type [org.bsnyder.spring.jms.listener.SessionAwareBatchMessageListener]
我应该更改容器类型(默认情况下是“默认”)吗?http://docs.spring.io/spring/docs/3.1.x/spring-framework-reference/html/jms.html不包含有关如何设置的详细信息。