2014-10-15 6 views
6

Ist es sicher, dasselbe Clientobjekt für mehrere Anforderungen gleichzeitig mit dem AWS Java SDK zu verwenden? Wenn ich zum Beispiel einen Webserver habe, der mehrere Anfragen gleichzeitig bearbeitet und eine oder mehrere Anfragen Zugriff auf DynamoDB benötigen, ist es sicher, ein statisches Client-Objekt für Lese- und Schreibvorgänge mit statischen Zugriffsmethoden, z.Ist es sicher, ein AWS Java SDK-Clientobjekt für die gleichzeitige Verwendung als statisch zu deklarieren?

public class DynamoDBManager { 

    private static AmazonDynamoDBClient client = new AmazonDynamoDBClient(CREDENTIALS); 

    public static void doRead(String hashKey) { 
     // use the client to read 
    } 

    public static void doWrite(MyData data) { 
     // use the client to write 
    } 
} 

... oder sollte ich die statischen Modifikatoren auf die Methoden und das Client-Objekt fallen, so dass jedes Mal, wenn eine Anforderung Web-Server Zugriff auf die Datenbank benötigt er die Managerklasse instanziiert muss seine eigene Version des bekommen Klient.

Werden Parallelitätsprobleme oder Konflikte auftreten, wenn das Clientobjekt statisch ist? Ich benutze DynamoDB hier als Beispiel, aber ich bin genauso interessiert an dem gleichen Szenario mit einem S3-Client.

Antwort

10

Alle Clients im AWS SDK für Java sind Thread-sicher und Sie sollten Clientobjekte erneut verwenden.

+1

Diese Informationen werden von Entwicklern dringend benötigt. Könnten Sie bitte diese Information in die JavaDoc API-Dokumentation einfügen (z. B. indem Sie einfach @ThreadSafe hinzufügen)? –

+0

Ich habe ein Problem angemeldet, abonnieren Sie die Benachrichtigung: https://github.com/aws/aws-sdk-java/issues/632 –

Verwandte Themen