Springboot NexusClient and NexusServiceClient<T> support for easier, correct SANO usage
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 35/100
- Issue-Typ
- Feature
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- java, spring-boot
- Bereich
- backend
Rechercherichtung
Start with the Spring Boot autoconfiguration and multiple-namespace support referenced in the issue, then trace how workflow clients are configured and exposed as beans. Determine how NexusClient and NexusServiceClient<T> should fit that configuration, including non-root namespaces; done means the requested client types can be injected with the described aliases and service configuration.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Is your feature request related to a problem? Please describe.
Guidance in javadoc for NexusClient is Client for managing standalone Nexus operation executions. Obtain an instance via newInstance(WorkflowServiceStubs) or newInstance(WorkflowServiceStubs, NexusClientOptions). Do not create this object per request; share it for the lifetime of the process.
[here])https://www.javadoc.io/doc/io.temporal/temporal-sdk/latest/io/temporal/client/NexusClient.html).
Describe the solution you'd like
First improvement
Lifestyle correctness guidance like that should be made simpler with Spring so I can nexusClient in my controller just like I can workflowClient.
We should support this across all namespaces though using the nice "non-root" namespace config support. It is Nexus, after all, so let me call across Namespaces :) .
spring.temporal:
namespaces:
# I have a couple services inside my `apps` Namespace I want to use
- namespace: apps
alias: apps
nexus-service-clients:
- alias: apps-v1
endpoint: oms-apps-v1
service: com.acme.oms.services.AppsService
- alias: support-v1
endpoint: oms-support-v1
service: com.acme.oms.services.SupportService
// my REST Controller
// Use @Qualifier since non-root referencing alias
public AppsController(@Qualifier("apps-v1NexusClient") NexusClient appsNexusClient) {
this.appsNC = appsNexusClient;
}
Customization for options (interceptors,dataconverter, etc) can follow the existing path for doing such things with workflow client...ideally we could do this in configuration directly but the requirement to code those a shortcoming that already exists in our SB integration so not necessarily part of this.
Second improvement
We can do better than this though I think and support a nexus-service-clients per client so I can do something like :
spring.temporal:
namespaces:
# I have a couple services inside my `apps` Namespace I want to use
- namespace: apps
alias: apps
nexus-service-clients:
- alias: apps-v1
endpoint: oms-apps-v1
service: com.acme.oms.services.AppsService
- alias: support-v1
endpoint: oms-support-v1
service: com.acme.oms.services.SupportService
// my REST Controller
// No @Qualifier needed but I could do it with `alias` I guess
public SupportController(NexusServiceClient<SupportService> supportSvc) {
this.supportSvc = supportSvc;
}
Describe alternatives you've considered
Roll my own @Bean but I want it to be more approachable!
Additional context
SANO is here, let's make it dead simple to integrate All The Things!
- Vorherrschende Sprache
- Java
- Sterne
- 433
- Forks
- 257
- Ø Merge
- 2 T. 18 Std.
- Gemergte PRs (30 T.)
- 24
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus temporalio/sdk-java
-
enhancement
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
temporalio/sdk-java#1825 ·
Maintainer antworten meist innerhalb von 1 Tag
-
enhancement
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 54/100
temporalio/sdk-java#3125 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
enhancement
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 55/100
temporalio/sdk-java#3124 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 38/100
temporalio/sdk-java#3121 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Allow a timer summary on Workflow.sleep and Workflow.await with timeoutEvtl. vergeben @sangkyoonnam hat das vor 6 Tagen übernommen. Offenenhancement
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 55/100
temporalio/sdk-java#3108 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in temporalio/sdk-java
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
java-native-access/jna#1740 ·
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 82/100
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
portfolio-performance/portfolio#6119 ·
Maintainer antworten meist innerhalb von 8 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
jenkinsci/ec2-plugin#2041 ·
-
L: github:actions L: php:composer
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
dependabot/dependabot-core#16493 ·
Maintainer antworten meist innerhalb von 1 Tag