【发布时间】:2013-03-30 02:41:37
【问题描述】:
我遇到了一个奇怪的问题
ActiveMQ 是消息服务器,使用 AMQP 发送消息
当我在同一个 Eclipse 项目中同时拥有发布者和订阅者时。我可以毫无问题地发送发送 ObjectMessage 和接收
但是,当我将订阅者和发布者分成两个不同的 eclipse 项目时,我得到了
javax.jms.MessageNotReadableException: Message body is write-only
这是我发送的对象的类
public class Test1 implements Serializable{
private String x;
public Test1( String x){
this.x = x;
}
}
这是个例外
javax.jms.MessageNotReadableException: Message body is write-only
at org.apache.activemq.command.ActiveMQBytesMessage.checkWriteOnlyBody(ActiveMQBytesMessage.java:863)
at org.apache.activemq.command.ActiveMQBytesMessage.initializeReading(ActiveMQBytesMessage.java:868)
at org.apache.activemq.command.ActiveMQBytesMessage.getBodyLength(ActiveMQBytesMessage.java:190)
at org.apache.qpid.proton.jms.AMQPNativeOutboundTransformer.transform(AMQPNativeOutboundTransformer.java:63)
at org.apache.qpid.proton.jms.AutoOutboundTransformer.transform(AutoOutboundTransformer.java:37)
at org.apache.activemq.transport.amqp.AmqpProtocolConverter$ConsumerContext.pumpOutbound(AmqpProtocolConverter.java:751)
at org.apache.activemq.transport.amqp.AmqpProtocolConverter$ConsumerContext.onMessageDispatch(AmqpProtocolConverter.java:710)
at org.apache.activemq.transport.amqp.AmqpProtocolConverter.onActiveMQCommand(AmqpProtocolConverter.java:300)
at org.apache.activemq.transport.amqp.AmqpTransportFilter.oneway(AmqpTransportFilter.java:64)
at org.apache.activemq.broker.TransportConnection.dispatch(TransportConnection.java:1378)
at org.apache.activemq.broker.TransportConnection.processDispatch(TransportConnection.java:897)
at org.apache.activemq.broker.TransportConnection.iterate(TransportConnection.java:943)
at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:129)
at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:47)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:679)
这是我遵循的代码
【问题讨论】:
-
抛出异常的代码是什么样的?异常的完整堆栈跟踪是什么?
-
消息 m = consumer.receive() ObjectMessage o = (ObjectMessage)m; //这里有异常
标签: serialization jms activemq amqp