Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Microprofile-Anwendungen mit Quarkus - reloaded

201 Aufrufe

Veröffentlicht am

Vortrag auf dem Expertenkreis Java am 27.2.2020, GEDOPLAN GmbH
Dirk Weil

Veröffentlicht in: Software
  • Als Erste(r) kommentieren

Microprofile-Anwendungen mit Quarkus - reloaded

  1. 1. MicroProfile-Anwendungen mit Quarkus - reloaded Expertenkreis Java, GEDOPLAN GmbH 27.02.2020 Dirk Weil
  2. 2. Dirk Weil GEDOPLAN GmbH, Bielefeld GEDOPLAN IT Consulting Softwareentwicklung, Beratung, Konzepte, Reviews GEDOPLAN IT Training Java, JEE, Tools u.v.a.m. in Berlin, Bielefeld, on-site JEE seit 1998 Speaker und Autor 2gedoplan.deMicroprofile-Anwendungen mit Quarkus - reloaded
  3. 3. Quarkus recap JEE + MicroProfile + diverse Ergänzungen Spring-Boot-Alternative Dev Mode Hotspot VM und native https://quarkus.io/ 3gedoplan.deMicroprofile-Anwendungen mit Quarkus - reloaded
  4. 4. Quarkus recap Jakarta EE 8 Jakarta Persistence (aka JPA) mit Hibernate Autoconfiguration für H2, PostgreSQL, MariaDB, MySQL, MS SQL, Derby CDI Implementierung ARC mit limitiertem Support Jakarta RESTful Web Services (aka JAX-RS) RESTeasy mit JsonB-Support Servlet Undertow TX 4gedoplan.deMicroprofile-Anwendungen mit Quarkus - reloaded
  5. 5. Quarkus recap MicroProfile Config jetzt auch application.yaml Health, Metrics Rest Client 5gedoplan.de greeting: message: Hello name: world "%dev": greeting: name: developer application.yaml @Inject @ConfigProperty(name = "greeting.name") String name; @Path("v2") @RegisterRestClient public interface CountryApi { @GET @Path("all") @Produces("application/json") Collection<Country> getAll(); @Inject @RestClient CountryApi countryClient; Microprofile-Anwendungen mit Quarkus - reloaded
  6. 6. MicroProfile Fault Tolerance Interceptors für Resilience @Retry wiederholt Aufruf bei Fehler (=Exception) @Timeout bricht langsame Aufrufe ab @Fallback liefert Ersatzwert 6 @Retry(maxRetries = 4) public int doSomethingWithRetry() { @Timeout(1000) public int doSomethingWithTimeout() { private int return42() { return 42; } @Fallback(fallbackMethod = "return42") public int doSomethingWithFallback() { gedoplan.deMicroprofile-Anwendungen mit Quarkus - reloaded
  7. 7. MicroProfile Fault Tolerance Interceptors für Resilience @CircuitBreaker unterdrückt Aufrufe bei hoher Fehlerrate 7 @CircuitBreaker(failureRatio = 0.25, requestVolumeThreshold = 10) public int doSomethingWithCircuitBreaker() { Demo quarkus-fault-tolerance closed open half-open zu viele Fehler ok Delay Fehler gedoplan.deMicroprofile-Anwendungen mit Quarkus - reloaded
  8. 8. MicroProfile OpenTracing Aufrufverfolgung Zero Config für Rest Endpoints und MP Rest Clients @Traced Interceptor Binding Jaeger: Trace Collection + UI 8gedoplan.de @Traced public String getPing() { Demo quarkus-opentracing Microprofile-Anwendungen mit Quarkus - reloaded
  9. 9. (MicroProfile Reactive) Messaging Designierter neuer MP-Bestandteil 9gedoplan.de @Inject @Channel("demo-channel-1") Emitter<String> emitter; … this.emitter.send(text); @Incoming("demo-channel-1") @Outgoing("demo-channel-2") String process(String text) { return text.toUpperCase(); @Incoming("demo-channel-2") void receive(String text) { this.log.debug("Received " + text);Demo quarkus-amqp quarkus-kafka Microprofile-Anwendungen mit Quarkus - reloaded
  10. 10. (MicroProfile Reactive) Messaging Einbindung von Message Brokern (Artemis, Kafka) 10gedoplan.de @Inject @Channel("posted-person") Emitter<Person> emitter; … this.emitter.send(person); mp.messaging.outgoing.posted-person.connector=smallrye-kafka mp.messaging.outgoing.posted-person.topic=person mp.messaging.incoming.received-person.connector=smallrye-kafka mp.messaging.incoming.received-person.topic=person @Incoming("received-person") public void onReceive(Person person) { this.log.debug("onReceive(" + person + ")"); Microprofile-Anwendungen mit Quarkus - reloaded
  11. 11. MicroProfile OpenAPI / Swagger Endpoint /openapi (konfigurierbar) API-Beschreibung kann mit Annotationen angereichert werden: 11gedoplan.de $ curl http://localhost:8080/openapi --- openapi: 3.0.1 info: title: Generated API version: "1.0" paths: /person: get: summary: Get all persons responses: "200": description: OK @GET @Path("{id}") @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) @Operation(summary = "Get a person") @APIResponse(description = "Found person (JSON/XML)") @APIResponse(responseCode = "404", description = "Person not found") public Person getById(@PathParam("id") Integer id) { Microprofile-Anwendungen mit Quarkus - reloaded
  12. 12. MicroProfile OpenAPI / Swagger Swagger-UI unter /swagger-ui (konfigurierbar) 12gedoplan.de Demo quarkus-rest-cdi-jpa Microprofile-Anwendungen mit Quarkus - reloaded
  13. 13. Native Graal VM: Erstellung native application target/xyz-runner Nur tatsächlich genutzter Code Achtung: Reflection Build auf Non-Linux im Docker Container Startzeit im ms-Bereich, Memory consumption im MB-Bereich 13gedoplan.de $ mvn -Pnative,docker … [INFO] docker run -v //c/GEDOPLAN/projects/gedoplan/showcase/quarkus-demo/q [quarkus-getting-started-runner:22] classlist: 4,939.89 ms … [quarkus-getting-started-runner:22] write: 576.45 ms [quarkus-getting-started-runner:22] [total]: 121,756.96 ms [INFO] Quarkus augmentation completed in 126125ms … [INFO] DOCKER> [docker.gedoplan.de/showcase/quarkus-getting-started:latest] Microprofile-Anwendungen mit Quarkus - reloaded
  14. 14. MyFaces https://github.com/apache/myfaces/tree/master/extensions/quarkus Work in progress! View Files in src/main/resources/META-INF/resources Alle Scopes mit Ausnahme von @ConversationScoped Weitere Libraries: https://github.com/rmpestano/quarkus-omnifaces https://github.com/adminfaces/quarkus-admin-starter 14gedoplan.de Demo quarkus-myfaces Microprofile-Anwendungen mit Quarkus - reloaded
  15. 15. Weitere Features Websockets JMS NoSQL Flyway Security mit OpenID, Keycloak, JWT RBAC Spring DI, Web, Data JPA, Security Scheduling Mail Kotlin … 15gedoplan.deMicroprofile-Anwendungen mit Quarkus - reloaded
  16. 16. Fazit MicroProfile (+ JEE) = Lightweight Enterprise Java Quarkus ~ Spring Boot für JEE kaum Umdenken notwendig für JEE-Entwickler macht Spaß native Ausführung möglich Richtung: Cloud, serverless (?) frühes Stadium, aber bewährte Komponenten 16gedoplan.deMicroprofile-Anwendungen mit Quarkus - reloaded
  17. 17. More github.com/GEDOPLAN/quarkus-demo Demo-Projekte www.gedoplan-it-training.de Trainings in Berlin, Bielefeld, inhouse neu: Microservices mit Quarkus - Grundlagen neu: Microservices mit Quarkus - Aufbau www.gedoplan-it-consulting.de Blog  dirk.weil@gedoplan.de @dirkweil 17gedoplan.deMicroprofile-Anwendungen mit Quarkus - reloaded

×