Skip to main content

Paralleler Zugriff auf Datenquellen über FS-Connection

Comments

4 comments

  • Zendesk API User
    Author: mikula - 1/18/2018 8:55

    Hallo Ronny,

    das FS-CLI / die FS-DevTools kennt ihr?

    Viele Grüße

    Martin

    0
  • Zendesk API User
    Author: pavone - 1/26/2018 13:11

    Hallo Ronny,

    soweit ich weiß sind parallele Anfragen über eine FS-Connection nicht möglich.

    Seit FirstSpirit 5.2.1604 gibt es die Klasse ConnectionExtractor, über das sich in einer WebApp die Connection im ServletRequest auslesen und nutzen lässt.

    Aber ich glaube das bringt euch nicht viel weiter.

    Spricht etwas dagegen in eurem System einen festen Pool an FS-Connections zu halten und wiederzuverwenden? Oder auf irgendeine andere Art die Zahl paralleler Anfragen zu begrenzen?

    Viele Grüße

    Tim

    0
  • Zendesk API User
    Author: witt - 2/7/2018 14:07

    Hallo Ronny,

    kannst du uns vielleicht noch den Anwendungsfall beschreiben der sich hinter der technischen Fragestellung verbirgt? Was macht das "System"? Wo wird die Connection aufgerufen? Innerhalb einer Vorschauseite?, aus einem externen Services heraus?

    Viele Grüße,

    Daniel

    0
  • Zendesk API User
    Author: RSch - 2/14/2018 9:28

    Hallo zusammen,

    vielen Dank für Eure Antworten! Nochmal zum Projekt: Wir entwickeln zur Zeit eine mobile Applikation, welche über ein Back-End Daten vom FirstSpirit-Server abruft und visualisiert. Bei jedem Aufruf, baut das Back-End eine Verbindung zum FirstSpirit-Server auf und übergibt die angeforderten Daten an das Front-End.

    Das Problem wurde jetzt so gelöst, dass die Anfragen an den FirstSpirit-Server als Callable in einem ExecutorService gestellt werden. Den ExecutorService haben wir in einem Singleton initialisiert und die Menge der Threads begrenzt. Unter Last wird diese Lösung früher oder später zu hohen Ladezeiten führen, weshalb wir zeitnah über ein Caching nachdenken werden. Im Folgenden findet Ihr den Code, welchen wir verwenden.

    ExecutorService-Singleton:

    import java.util.concurrent.ExecutorService;

    import java.util.concurrent.Executors;

    public class ConnectionExecutorService {

        private static ConnectionExecutorService instance;

        private final int NUMTHREAD = 5;

        ExecutorService executorService;

        public static ConnectionExecutorService getInstance() {

            if (instance == null){

                instance = new ConnectionExecutorService();

            }

            return instance;

        }

        private ConnectionExecutorService() {

            executorService = Executors.newFixedThreadPool(NUMTHREAD);

        }

        public ExecutorService getExecutorService() {

            return executorService;

        }

    }

    Verwendung eines Callable:

    import java.util.concurrent.Callable;

    ...

    Callable<AnyTypeYouWant > callable = new Callable<AnyTypeYouWant >() {

         public AnyTypeYouWant call() throws Exception {

              // Enable Connection to FS-Server

              // Execute Query

              // Disconnect

              return result;

         }

    }

    (AnyTypeYouWant) ConnectionExecutorService.getInstance().getExecutorService().submit(callable).get();

    Danke nochmal und viele Grüße,

    Ronny

    0

Please sign in to leave a comment.