Как я могу поймать java.net.SocketException, когда ActiveMQ остановлен? - PullRequest
0 голосов
/ 05 марта 2019

У меня есть потребительское приложение Java, которое подключается к серверу Apache ActiveMQ.Работает.Однако, если я остановлю сервер Apache ActiveMQ, потребительское приложение получит исключение:

java.net.SocketException: Connection reset

Как я могу обработать это исключение, например, я хотел бы отправить электронное письмо с предупреждением в службу поддержки.Как я могу обнаружить автономный сервер ActiveMQ.

Вот подробности исключения

// Getting JMS connection from the server
ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(this.activeMqClient.getUsername(), this.activeMqClient.getPassword(), this.activeMqClient.getProducerUri());
activeMQConnectionFactory.setUseAsyncSend(false);
activeMQConnectionFactory.setMaxThreadPoolSize(1);

this.activeMqClient.setClientId(activeMqClient.getClientType() + "_" + Thread.currentThread().getName());

if (this.activeMqClient.getClientId() != null) {
    activeMQConnectionFactory.setClientID(this.activeMqClient.getClientId());
}

Connection connection = activeMQConnectionFactory.createConnection();

if (this.activeMqClient.getClientId() != null) {
    connection.setClientID(this.activeMqClient.getClientId());
}

connection.start();

connection.setExceptionListener(this);

// Creating session for receiving messages
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

// Getting the queue
Destination destination = session.createQueue(this.activeMqClient.getDestinationQueueName() + "?consumer.exclusive=true");

// MessageConsumer is used for receiving (consuming) messages          
MessageConsumer consumer = session.createConsumer(destination);

//Setting message listener
consumer.setMessageListener(this);

1 Ответ

0 голосов
/ 05 марта 2019

Вы можете поймать его как любое другое исключение:

try {
  //... client code ...//
}
catch(SocketException e) {
  //... send email ...//
}
...