Jms HornetQ 2.2.5嵌入式示例异常
我是HornetQ新手,我正在测试HornetQ示例。运行example EmbeddedExample.java(位于:hornetq-2.2.5.Final\examples\core\embedded\src\org\hornetq\core\example)时出现异常。我在那个例子中做了一些改变,得到了例外。我所做的更改是,我将发送过程和消费过程放在一个10万次迭代的for循环中。 代码是:Jms HornetQ 2.2.5嵌入式示例异常,jms,hornetq,Jms,Hornetq,我是HornetQ新手,我正在测试HornetQ示例。运行example EmbeddedExample.java(位于:hornetq-2.2.5.Final\examples\core\embedded\src\org\hornetq\core\example)时出现异常。我在那个例子中做了一些改变,得到了例外。我所做的更改是,我将发送过程和消费过程放在一个10万次迭代的for循环中。 代码是: System.out.println("Producer:"); System.out.prin
System.out.println("Producer:");
System.out.println("StartDate: "+new Date());
for (int i = 0; i < 100000; i++)
{
message.putStringProperty(propName, "Message: " + i);
producer.send(message);
}
System.out.println("EndDate: "+new Date());
// Step 7. Create the message consumer and start the connection
ClientConsumer messageConsumer = session.createConsumer(queueName);
session.start();
// Step 8. Receive the message.
System.out.println("Consumer:");
System.out.println("StartDate: "+new Date());
for (int i = 0; i < 100000; i++)
{
ClientMessage messageReceived = messageConsumer.receive();
System.out.println(messageReceived.getStringProperty(propName));
}
System.out.println("EndDate: "+new Date());
如何克服此异常?该示例将启动一个只有5000万条消息的VM,在您的示例中,您发送的是10万条消息,对于5000万条消息,什么可能不够 我这里没有您的更改,但是我可以在build.xml上运行10万条消息来提供更多内存的示例 在中断通信并使会话关闭之前,您可能会遇到一些异常 此外,消息系统是异步的,因此我建议您将发送块更改为:
for (int i = 0; i < 100000; i++)
{
message = sesison.createMessage(true); // move it
message.putStringProperty(propName, "Message: " + i);
producer.send(message);
}
for(int i=0;i<100000;i++)
{
message=sesison.createMessage(true);//移动它
message.putStringProperty(propName,“message:+i”);
生产者。发送(消息);
}
你也应该承认消费。否则,消息仍将保留在内存中
该示例的目的是展示如何嵌入HornetQ。对于其他用途,如包装和生产,还有其他示例
for (int i = 0; i < 100000; i++)
{
ClientMessage messageReceived = messageConsumer.receive();
messageReceived.acknowledge();
System.out.println(messageReceived.getStringProperty(propName));
}
for(int i=0;i<100000;i++)
{
ClientMessageReceived=messageConsumer.receive();
messageReceived.acknowledge();
System.out.println(messageReceived.getStringProperty(propName));
}
谢谢Clebert,当我再次在消费者循环中启动会话时,它会起作用。我试过你的建议,但它不起作用,例外仍然存在。你可以在这里看到代码:我不确定你做错了什么。您需要向我发送生成异常的代码。(我不确定您在另一个问题上发布的代码是否会产生异常)。到目前为止,我怀疑您的内存不足。(从我运行的测试中)我将把你送到哪里?我的邮件id是news。anand11@gmail.com
for (int i = 0; i < 100000; i++)
{
ClientMessage messageReceived = messageConsumer.receive();
messageReceived.acknowledge();
System.out.println(messageReceived.getStringProperty(propName));
}