我使用Spring集成连接到JMS Messaging队列。 我正在使用的JMS提供程序是Apache ActiveMQ。
我有以下类读取JMS消息(具有ServiceActivator
方法):
@Component
public class MessageReader
{
@ServiceActivator
public Entity onMessage(Message<Entity> inboundMessage) {
System.out.println(" -------Message Read Start--------");
System.out.println(inboundMessage.getHeaders());
System.out.println(" -------Message Headers Reading completed--------");
Entity payload = null;
try{
payload = inboundMessage.getPayload();
System.out.println(" -------Message Read End--------");
}catch(Exception e){
e.printStackTrace();
}
return payload;
}
}
在这里,Entity在我的应用程序中是一个POJO。
在从JMS队列中读取消息时,我得到以下异常:
java.lang.ClassCastException: org.apache.activemq.command.ActiveMQObjectMessage cannot be cast to com.poc.pojo.Entity
我该如何解决这个问题?
由于
答案 0 :(得分:0)
查看你的stacktrace,ClassCastException,
第二个inboundMessage.getPayload()。getClass(),实现所需的ActiveMQ接口?
答案 1 :(得分:0)
看起来您的<int-jms:message-driver-channel-adapter>
配置了`extract-payload =“false”。
在这种情况下,整个JmsMessage
呈现为Spring集成消息的payload
。但正如您所看到的那样ServiceActivator
完全符合JmsMessage
的正文。