Qpid质子(Java)-send()方法在发送到ActiveMQ队列时经常挂起

Qpid质子(Java)-send()方法在发送到ActiveMQ队列时经常挂起,java,activemq,qpid,Java,Activemq,Qpid,我使用Qpid质子(质子-j-0.13.0)通过AMQP向ActiveMQ 5.12.0队列发送消息。在一台开发机器上,ActiveMQ和Java程序在同一台机器上运行,这样做很好。在测试环境中,ActiveMQ在单独的服务器上运行,我们看到15%到20%的情况下send()方法挂起。当send()方法挂起时,CPU也保持在100%左右。send()成功后,将在0.1秒内完成 要执行发送的语句与此类似: final Messenger messenger = Messenger.Factory.

我使用Qpid质子(质子-j-0.13.0)通过AMQP向ActiveMQ 5.12.0队列发送消息。在一台开发机器上,ActiveMQ和Java程序在同一台机器上运行,这样做很好。在测试环境中,ActiveMQ在单独的服务器上运行,我们看到15%到20%的情况下send()方法挂起。当send()方法挂起时,CPU也保持在100%左右。send()成功后,将在0.1秒内完成

要执行发送的语句与此类似:

final Messenger messenger = Messenger.Factory.create();
messenger.start;
messenger.put(message); // one message of 1 KByte
messenger.send(1);
messenger.stop();
this.messenger = Messenger.Factory.create();
this.messenger.start();
this.messenger.subscribe(this.address);

while (this.isRunning) {
    try {
        this.messenger.recv(1);
        while (this.messenger.incoming() > 0) {
            final Message message = this.messenger.get();
            this.messageListener.onMessage(message);
        } catch (final Exception e) {
            LOGGER.error("Exception while receiving messages", e);
        }
}
我知道Messenger.send(int n)是一种阻塞方法。然而,我不知道为什么它会阻止我的电话。我可以添加一个超时并尝试重新发送消息,但这是一个解决方法,而不是一个合适的解决方案

从ActiveMQ接收已发送消息的语句与此类似:

final Messenger messenger = Messenger.Factory.create();
messenger.start;
messenger.put(message); // one message of 1 KByte
messenger.send(1);
messenger.stop();
this.messenger = Messenger.Factory.create();
this.messenger.start();
this.messenger.subscribe(this.address);

while (this.isRunning) {
    try {
        this.messenger.recv(1);
        while (this.messenger.incoming() > 0) {
            final Message message = this.messenger.get();
            this.messageListener.onMessage(message);
        } catch (final Exception e) {
            LOGGER.error("Exception while receiving messages", e);
        }
}
作为一名Qpid新手,我是否错过了一些简单的东西?这可能是ActiveMQ中的配置吗?添加超时并重试是否正常?如能帮助解决此问题,将不胜感激