/ / Napísanie dobrého rozhrania na odčlenenie od konkrétnej technológie ... čo robiť s výnimkami? - java, rozhranie, amazon-webové služby, oddelenie

Písanie dobrého rozhrania na oddelenie od konkrétnej technológie ... čo robiť s výnimkami? - java, rozhranie, služby amazon-web, oddelenie

Chcem napísať rozhranie Java, ktoré sa má odblokovaťz konkrétnej technológie, aký je najlepší spôsob odovzdávania výnimiek. Povedzme, že technológia, ktorú chcem de-párovať, je Amazon SQS. Amazon SQS je v podstate služba vo fronte a ja chcem byť čo najpružnejší a chcem mať možnosť ľahko nahradiť SQS pomocou RabbitMQ alebo inej služby vo fronte.

Tu je to, čo mám zatiaľ:

public interface QueueService {

// URL of the Queue Server
public void setURL(String url);
public String getURL();

public Msg getMessage() throws QueueServiceException;
public void deleteMessage(String messageId) throws QueueServiceException;

}

Implementácia funkcie getMessage SQS je pravdepodobnecelkom jednoduché, iba používa Amazon AWS Java SDK a v podstate metódu prijímania správ triedy AmazonSQS. Tu je podpis tejto metódy v AWS Java SDK:

  public ReceiveMessageResult receiveMessage(ReceiveMessageRequest receiveMessageRequest)  throws AmazonServiceException, AmazonClientException;

Teraz mám otázku, čo s nimi urobímVýnimky pri implementácii rozhrania QueueService ... zachytím iba tieto výnimky (ktoré sú špecifické pre konkrétnu technológiu) a hádam ako QueueServiceException?

try {
messages = amazonSQS.receiveMessage(receiveMessageRequest).getMessages()
} catch(AmazonServiceException ase) {
throw new QueueServiceException();
}

Výnimka QueueServiceException je:

public class QueueServiceException extends Exception {

public QueueServiceException (String message){
super(message);
}

public QueueServiceException(String message, Throwable cause){
super(message, cause);

}

}

Nejaké nápady ?

Na zdraví!

odpovede:

2 pre odpoveď č. 1

Budeš musieť urobiť výnimočné balenie, Jar to robí. V zásade chytte výnimku špecifickú pre poskytovateľa a znova ho odošlite ako svoju výnimku.