org.apache.activemq.broker.TransportConnection serviceTransportException警告:java.io.EOFException

seb*_*ner 5 java tomcat activemq-classic jms tomee

在我的服务器日志中,我偶尔可以看到例外:

Aug 11, 2015 10:13:34 AM org.apache.activemq.broker.TransportConnection serviceTransportException
WARNING: Transport Connection to: tcp://127.0.0.1:55472 failed: java.io.EOFException
Run Code Online (Sandbox Code Playgroud)

那些似乎不是实际事件或消息发送到队列.它们只是随机发生的.

这是Tomcat/Tomee上的ActiveMQ

配置ActiveMQ的代码是:

我的ActiveMQ配置非常简单:

<?xml version="1.0" encoding="UTF-8"?>
<tomee>
    <!-- see http://tomee.apache.org/containers-and-resources.html -->

    <!-- activate next line to be able to deploy applications in apps -->
    <!-- <Deployments dir="apps" /> -->

    <Resource id="MyJmsResourceAdapter" type="ActiveMQResourceAdapter">
        BrokerXmlConfig =  broker:(tcp://localhost:61616)
        ServerUrl       =  tcp://localhost:61616
    </Resource>

    <Resource id="MyJmsConnectionFactory" type="javax.jms.ConnectionFactory">
        ResourceAdapter = MyJmsResourceAdapter
    </Resource>

</tomee>
Run Code Online (Sandbox Code Playgroud)

要定义队列我有一个简单的代码:

@Resource(name = "myQueue")
private Queue barQueue;

@Resource
private ConnectionFactory connectionFactory;

/**
 * Push Message to Queue
 *
 * @param payload
 * @throws JMSException
 */
private void pushToQueue(Serializable payload) throws JMSException {
    Connection connection = connectionFactory.createConnection();
    connection.start();

    // Create a Session
    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

    // Create a MessageProducer from the Session to the Topic or Queu
    MessageProducer producer = session.createProducer(barQueue);
    producer.setDeliveryMode(DeliveryMode.PERSISTENT);

    // Create a message
    ObjectMessage message = session.createObjectMessage(payload);

    // Tell the producer to send the message
    producer.send(message);

    connection.close();
}
Run Code Online (Sandbox Code Playgroud)

我可以在日志中看到好消息.

我只是随机看到这个EOFException弹出.

没有我向队列添加任何消息就会发生这种情况.

小智 0

您的 ActiveMQ 配置显示您正在 61616 上打开与代理的连接,但记录的错误表明客户端使用端口 55472。必须有其他客户端正在建立连接。