gpt4 book ai didi

jms - HornetQ 2.2.5 嵌入示例异常

转载 作者:行者123 更新时间:2023-12-05 01:11:11 26 4
gpt4 key购买 nike

我是 HornetQ 的新手,我正在测试 hornetQ 示例。运行示例 EmbeddedExample.java 时出现异常(位于:hornetq-2.2.5.Final\examples\core\embedded\src\org\hornetq\core\example)。我在那个例子中做了一些改变并得到了异常。我所做的更改是,我将发送过程和消费过程放在了 1,00,000 次迭代的 for 循环中。
代码是:

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());

生产者工作正常,消费者在阅读 18K 或 13K 消息后给我一个异常(exception)。堆栈跟踪是:
[java] Message: 18384
[java] Sep 2, 2011 11:15:29 AM org.hornetq.core.logging.impl.JULLogDelegate
info
[java] INFO: HornetQ Server version 2.2.5.Final (HQ_2_2_5_FINAL_AS7, 121) [
588e32ee-d493-11e0-b759-0026b6a94d9b] stopped
[java] HornetQException[errorCode=102 message=Consumer is closed]
[java] at org.hornetq.core.client.impl.ClientConsumerImpl.checkClosed(C
lientConsumerImpl.java:811)
[java] at org.hornetq.core.client.impl.ClientConsumerImpl.receive(Clien
tConsumerImpl.java:163)
[java] at org.hornetq.core.client.impl.ClientConsumerImpl.receive(Clien
tConsumerImpl.java:364)
[java] at org.hornetq.core.example.EmbeddedExample.main(EmbeddedExample
.java:107)
[java] Java Result: -1

BUILD FAILED
C:\hornetq-2.2.5.Final\examples\core\embedded\build.xml:40: EmbeddedExample

我如何克服这个异常?

最佳答案

该示例将启动仅具有 50M 的 VM,在您的示例中,您发送 100K 消息,对于 50M 来说可能还不够。

我在这里没有您的更改,但我可以使用 100K 消息运行示例,因为它在 build.xml 上提供更多内存。

在中断通信并使 session 关闭之前,您可能会遇到一些异常。

此外,消息系统是异步的,因此我建议您将发送 block 更改为:

for (int i = 0; i < 100000; i++)
{
message = sesison.createMessage(true); // move it
message.putStringProperty(propName, "Message: " + i);
producer.send(message);
}

而且您还应该确认消费。否则,消息仍将保留在内存中。

该示例的目的是展示如何嵌入 HornetQ。对于其他用法,例如 acking 和 producer,还有其他示例。
for (int i = 0; i < 100000; i++)            
{
ClientMessage messageReceived = messageConsumer.receive();
messageReceived.acknowledge();
System.out.println(messageReceived.getStringProperty(propName));
}

关于jms - HornetQ 2.2.5 嵌入示例异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7279727/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com