SocketException в ActiveMQ при выходе из приложения прослушивателя - PullRequest
0 голосов
/ 09 июня 2009

В настоящее время я настраиваю сервер Tomcat, на котором работает встроенный брокер ActiveMQ. Я использую Spring для настройки JMS. Я написал тестовое приложение для прослушивания тем, и при выходе из тестового приложения брокер ActiveMQ выдает исключение SocketException. Вот исключение:

2009-06-09 13:12:48,005 DEBUG Transport:229 - Transport failed: java.net.SocketException: Connection reset
java.net.SocketException: Connection reset
        at java.net.SocketInputStream.read(SocketInputStream.java:168)
        at org.apache.activemq.transport.tcp.TcpBufferedInputStream.fill(TcpBufferedInputStream.java:50)
        at org.apache.activemq.transport.tcp.TcpBufferedInputStream.read(TcpBufferedInputStream.java:58)
        at java.io.DataInputStream.readInt(DataInputStream.java:370)
        at org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:269)
        at org.apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java:210)
        at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:202)
        at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:185)
        at java.lang.Thread.run(Thread.java:619)

Мое тестовое приложение просто загружает контекстный XML-файл, циклы спят каждые 60 секунд.

public static void main(String[] args) {
        long numMillisecondsToSleep = 60000; 
        new ClassPathXmlApplicationContext("client-context.xml");  

        while (true) {
            try {
                logger.info("Sleeping for 60 seconds");
                Thread.sleep(numMillisecondsToSleep);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

Мне было интересно, кто-нибудь может знать, почему я получаю это исключение. Я очень новичок в ActiveMQ и JMS в целом, поэтому любые идеи будут с благодарностью.

Ответы [ 2 ]

0 голосов
/ 13 июня 2009

Я бы порекомендовал заглянуть в Spring JmsTemplates; он упаковывает всю сложность MQ в красивый пакет и гарантирует, что небольшие ошибки, подобные этой, не вызовут у вас многочасовых проблем.

http://activemq.apache.org/spring-support.html

0 голосов
/ 10 июня 2009

Я думаю, что есть способ красиво завершить работу встроенного брокера с помощью вызова метода. Размещение вашей конфигурации вместе с вашим кодом встраивания поможет людям понять, что происходит.

...