Serialization javax.jms.MessageNotReadableException:消息正文是只写的

Serialization javax.jms.MessageNotReadableException:消息正文是只写的,serialization,jms,activemq,amqp,Serialization,Jms,Activemq,Amqp,我有一个奇怪的问题 ActiveMQ是消息服务器,am使用AMQP发送消息 当发布者和订阅者都在同一个eclipse项目中时。我可以毫无问题地发送和接收ObjectMessage 但是,当我将订阅服务器和发布服务器拆分为两个不同的eclipse项目时,我得到了 javax.jms.MessageNotReadableException: Message body is write-only 这是我发送的对象的类 public class Test1 implements Serializabl

我有一个奇怪的问题

ActiveMQ是消息服务器,am使用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)
这是我下面的代码


这听起来像个bug,在ActiveMQ站点上打开一个Jira问题并发布一个测试用例,我认为这里没有任何神奇的开关来修复异常。不张贴你的代码,这就是我们所能说的

这应该是带有AMQ的ActiveMQ中的一个bug

此错误发生在两种可再现的条件下

  • 以消息形式发送对象(当前无法发送对象)
  • 当消费者遇到一些异常时
  • 这里值得注意的是


    这不会影响正在传输的消息。您将看到异常,但数据传输将正常工作

    引发异常的代码是什么样子的?异常的完整堆栈跟踪是什么?消息m=consumer.receive()ObjectMessage o=(ObjectMessage)m//这是我下面的代码!