Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Springboot NexusClient and NexusServiceClient<T> support for easier, correct SANO usage

Open
#3,122 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
35/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Active
Tech stack
java, spring-boot
Domain
backend

Research direction

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.

Written by the indexing model from the issue text.

Description

enhancement

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;
  }

ref: https://github.com/temporalio/sdk-java/tree/main/temporal-spring-boot-autoconfigure#running-multiple-name-space-experimental

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!

Dominant language
Java
Stars
434
Forks
260
Avg merge
2d 18h
Merged PRs (30d)
24

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from temporalio/sdk-java

All issues in temporalio/sdk-java

Similar issues

More Java issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.