conductor-oss/conductor · error · IllegalArgumentException

Unknown queue type %s

Error message

Unknown queue type %s

What it means

Thrown by EventQueues.getQueue when the event string DOES contain a ':' but the part before it (the type) is not a key in the providers map. The providers map is populated by the registered EventQueueProvider beans (sqs, conductor, amqp, kafka, etc.). An unrecognized prefix means no provider can serve the queue.

Source

Thrown at core/src/main/java/com/netflix/conductor/core/events/EventQueues.java:66

                .map(p -> p.getClass().getName())
                .collect(Collectors.toList());
    }

    @NonNull
    public ObservableQueue getQueue(String eventType) {
        String event = parametersUtils.replace(eventType).toString();
        int index = event.indexOf(':');
        if (index == -1) {
            throw new IllegalArgumentException("Illegal event " + event);
        }

        String type = event.substring(0, index);
        String queueURI = event.substring(index + 1);
        EventQueueProvider provider = providers.get(type);
        if (provider != null) {
            return provider.getQueue(queueURI);
        } else {
            throw new IllegalArgumentException("Unknown queue type " + type);
        }
    }
}

View on GitHub (pinned to cf7c3e4a8a)

Solutions

  1. Use a provider type that is registered at runtime (call EventQueues.getProviders() to list available ones).
  2. Add the missing provider module to the classpath / enabled dependencies.
  3. Correct the prefix spelling in the event handler / workflow definition.
  4. Ensure the provider bean is not excluded by a @ConditionalOnProperty that evaluates false.

Example fix

// before - provider not on classpath
queue = eventQueues.getQueue("nats:my-queue");
// after - use a registered provider, or add the nats module
queue = eventQueues.getQueue("sqs:my-queue");
Defensive patterns

Strategy: validation

Validate before calling

// Confirm the provider type is registered
String type = event.substring(0, event.indexOf(':'));
if (!eventQueues.getProviders().isEmpty() /* or check a known set */) {
    // verify 'type' is among registered providers before calling getQueue
}
if (!registeredProviderTypes.contains(type)) {
    throw new IllegalArgumentException("Unknown queue type " + type);
}

Try / catch

try {
    ObservableQueue q = eventQueues.getQueue(eventType);
} catch (IllegalArgumentException e) {
    // unknown type -> include the provider module or use a registered type
}

Prevention

When it happens

Trigger: Calling getQueue with a type for which no EventQueueProvider bean is registered, e.g. 'nats:my-queue' when the nats provider module is not on the classpath. Also fires if the prefix is misspelled.

Common situations: The required queue provider module (e.g. conductor-aws-sqs-queue) is not included in the build/deployment. A typo in the type prefix. Provider disabled via configuration. Mismatch between the event name used in a definition and the providers available at runtime.

Related errors


AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14). Data as JSON: /api/errors/5b44ffbd7631dab6. Report an issue: GitHub.