conductor-oss/conductor · error · RuntimeException
Queue name is undefined
Error message
Queue name is undefined
What it means
Thrown as RuntimeException by getOrCreateQueue when the queue 'name' argument is empty (StringUtils.isEmpty). For a queue-typed URI the name is the queue identifier; RabbitMQ can declare a server-generated name only when name is null, but here empty is treated as a misconfiguration and rejected.
Source
Thrown at amqp/src/main/java/com/netflix/conductor/contribs/queue/amqp/AMQPObservableQueue.java:603
return getOrCreateQueue(
connectionType,
settings.getQueueOrExchangeName(),
settings.isDurable(),
settings.isExclusive(),
settings.autoDelete(),
settings.getArguments());
}
private AMQP.Queue.DeclareOk getOrCreateQueue(
ConnectionType connectionType,
final String name,
final boolean isDurable,
final boolean isExclusive,
final boolean autoDelete,
final Map<String, Object> arguments)
throws Exception {
if (StringUtils.isEmpty(name)) {
throw new RuntimeException("Queue name is undefined");
}
arguments.put(QUEUE_TYPE, settings.getQueueType());
Channel chn = null;
try {
LOGGER.debug("Creating queue {}", name);
chn =
amqpConnection.getOrCreateChannel(
connectionType, getSettings().getQueueOrExchangeName());
return chn.queueDeclare(name, isDurable, isExclusive, autoDelete, arguments);
} catch (final Exception e) {
LOGGER.warn("Failed to create queue {}", name, e);
throw e;
} finally {
if (chn != null) {
try {
amqpConnection.returnChannel(connectionType, chn);
} catch (Exception e) {
LOGGER.error("Failed to return the channel of {}. {}", connectionType, e);View on GitHub (pinned to cf7c3e4a8a)
Solutions
- Ensure the amqp_queue URI has a non-empty queue name, e.g. amqp_queue:myQueue?durable=true.
- Confirm any ${queue.name} placeholder resolves to a non-empty value in the active profile.
- Log the resolved settings.getQueueOrExchangeName() at startup to catch the empty value early.
Example fix
// before amqp_queue:?durable=true // after amqp_queue:conductor_events?durable=true
Defensive patterns
Strategy: validation
Validate before calling
import org.apache.commons.lang3.StringUtils;
String queueName = settings.getQueueOrExchangeName();
if (!useExchange && StringUtils.isBlank(queueName)) {
throw new IllegalStateException(
"AMQP queue URI must include a non-empty queue name; resolved URI=" + queueURI);
} Prevention
- Validate the parsed queue name is non-blank before getOrCreateQueue.
- Resolve and log all queue URIs at startup to surface empty names early.
- Guard any property placeholder so it cannot resolve to an empty queue name.
When it happens
Trigger: A queue-typed AMQP URI whose name segment is empty (e.g. 'amqp_queue:?durable=true'), or settings.getQueueOrExchangeName() returned blank after URI parsing. Fires during getOrCreateQueue at observer build/startup.
Common situations: Property placeholder for the queue name left unresolved; URI typed as amqp_queue with the name accidentally removed; environment-specific config where the queue name variable is unset in one profile.
Related errors
- Exchange name is undefined
- Exchange type is undefined
- Queue name for publishing is undefined
- Delivery mode must be 1 or 2
- Queue URI doesn't matches the expected regexp
AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14).
Data as JSON: /api/errors/1ebdd22c6589f14c.
Report an issue: GitHub.