0

AciveMQを使用して大きなJavaオブジェクトを送信しているときにjava.io.EOFExceptionを取得します。

以下は私が送ろうとしている大きなオブジェクトです

class TestDataBean implements Serializable
{
private String testName = "TestName";
private String testDesc = "testDesc";

private String bigData = getBigString();

@Override
public String toString() {
    return testName +" : "+testDesc+" : "+bigData.length();
}


private static String getBigString() 
{
    StringBuffer stringBuffer = new StringBuffer();

    for(int i=0;i<1000; i++)
    {
        stringBuffer.append("tsssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss");
    }

    return stringBuffer.toString();
}

}

以下はstackTraceです。

java.io.EOFException
    at java.io.ObjectInputStream$PeekInputStream.readFully(Unknown Source)
at java.io.ObjectInputStream$BlockDataInputStream.readUTFBody(Unknown Source)
at java.io.ObjectInputStream$BlockDataInputStream.readLongUTF(Unknown Source)
at java.io.ObjectInputStream.readString(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
at java.io.ObjectInputStream.readSerialData(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)Recieved MSG : 0 : null

at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at poc_publisher_subsciber.common.CommonUtil.getObject(CommonUtil.java:18)
at blob_messages.bsr_clients.GenesisMessageListener.onMessage(GenesisMessageListener.java:30)
at org.apache.activemq.ActiveMQMessageConsumer.dispatch(ActiveMQMessageConsumer.java:1298)
at org.apache.activemq.ActiveMQSessionExecutor.dispatch(ActiveMQSessionExecutor.java:131)
at org.apache.activemq.ActiveMQSessionExecutor.iterate(ActiveMQSessionExecutor.java:202)
at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122)
at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

適切なオブジェクトを送信していることを示すプロデューサー。しかし、消費者側では、例外を超えています。

ActiveMQConnectionFactoryを使用して以下の構成も試しました

ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(url);
        factory.setProducerWindowSize(1024000000);
        factory.setSendTimeout(600000);

私にいくつかの解決策を提案してください。前もって感謝します。

4

1 に答える 1

0

申し訳ありませんが、これは私の間違いでした。私が何をしていたかを説明させてください。-私はStreamMessageとしてメッセージを送信していました-そしてこれをバイト配列で読み取っていました送信したデータのサイズは約70Kバイトで、SILLYMISTAKEとして私が持っていた配列はjus10Kの容量でした。nそのため、このEOFExceptionが発生していました。申し訳ありませんが、時間がかかります。そして、他の誰も同じような間違いをしないことを期待してこれを投稿します:)ありがとう。

于 2012-06-14T06:11:49.127 に答える