使用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);
请建议我一些解决方案。 提前谢谢。
答案 0 :(得分:0)
抱歉,这是我的错误。让我解释一下我在做什么。 - 我发送消息作为StreamMessage - 并在一个字节数组中读取这个数据我发送的数据大小约为70K字节而作为一个SILLY MISTAKE我所拥有的数据是jus 10K容量。 ñ所以我得到了这个EOFException。对不起,我抽空了。发布这个希望没有其他人会做类似的错误:)谢谢。