conductor-oss/conductor · error · IllegalArgumentException
Settings are undefined
Error message
Settings are undefined
What it means
Constructor guard on AMQPObservableQueue: the AMQPSettings argument is null. Thrown during construction. The Builder always creates an AMQPSettings via new AMQPSettings(properties, queueType).fromURI(queueURI), so this guard is hit by direct construction that omits settings.
Solutions
- Construct via the Builder, which builds AMQPSettings from properties and the queue URI.
- If constructing directly, build settings first: new AMQPSettings(properties, queueType).fromURI(queueURI).
Example fix
// before: settings null new AMQPObservableQueue(factory, addresses, useExchange, null, retry, batchSize, pollTimeInMS); // after: build settings from the queue URI AMQPSettings settings = new AMQPSettings(properties, queueType).fromURI(queueURI); new AMQPObservableQueue(factory, addresses, useExchange, settings, retry, batchSize, pollTimeInMS);
Defensive patterns
Strategy: validation
Validate before calling
if (settings == null) {
throw new IllegalArgumentException("settings required; build via AMQPSettings.fromURI");
} Prevention
- Use the Builder, which builds AMQPSettings from properties and the queue URI.
- When constructing directly, build settings first with new AMQPSettings(properties, queueType).fromURI(queueURI).
- Validate settings in a construction helper.
When it happens
Trigger: Calling the AMQPObservableQueue constructor directly with a null AMQPSettings.
Common situations: Custom/test wiring that passes null for settings; the caller forgot to build settings from the queue URI.
Related errors
- Addresses are undefined
- Batch size must be greater than 0
- Connection factory is undefined
- Hosts are undefined
- Password is null or empty
AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14).
Data as JSON: /api/errors/314c59a20e57ce0f.
Report an issue: GitHub.
Appendix: source
Thrown at amqp/src/main/java/com/netflix/conductor/contribs/queue/amqp/AMQPObservableQueue.java:86
protected LinkedBlockingQueue<Message> messages = new LinkedBlockingQueue<>();
private volatile boolean running;
public AMQPObservableQueue(
ConnectionFactory factory,
Address[] addresses,
boolean useExchange,
AMQPSettings settings,
AMQPRetryPattern retrySettings,
int batchSize,
int pollTimeInMS) {
if (factory == null) {
throw new IllegalArgumentException("Connection factory is undefined");
}
if (addresses == null || addresses.length == 0) {
throw new IllegalArgumentException("Addresses are undefined");
}
if (settings == null) {
throw new IllegalArgumentException("Settings are undefined");
}
if (batchSize <= 0) {
throw new IllegalArgumentException("Batch size must be greater than 0");
}
if (pollTimeInMS <= 0) {
throw new IllegalArgumentException("Poll time must be greater than 0 ms");
}
this.useExchange = useExchange;
this.settings = settings;
this.batchSize = batchSize;
this.amqpConnection = AMQPConnection.getInstance(factory, addresses, retrySettings);
this.retrySettings = retrySettings;
this.setPollTimeInMS(pollTimeInMS);
}
@Override
public Observable<Message> observe() {
Observable.OnSubscribe<Message> onSubscribe = null;View on GitHub (pinned to cf7c3e4a8a)