apache/seatunnel · error · AzureQueueConnectorException

CONFIGURATION_FAILED

CONFIGURATION_FAILED

Error message

Azure Queue Storage source supports streaming jobs only

What it means

AzureQueueStorageSource.getBoundedness() throws AzureQueueConnectorException(CONFIGURATION_FAILED) when the job mode is not STREAMING. This source continuously polls a queue (UNBOUNDED), so it only makes sense in streaming mode; batch mode is rejected explicitly.

Source

Thrown at seatunnel-connectors-v2/connector-azure-queue-storage/src/main/java/org/apache/seatunnel/connectors/seatunnel/azure/queue/source/AzureQueueStorageSource.java:63

    private final AzureQueueSourceConfig config;
    private final CatalogTable catalogTable;
    private final DeserializationSchema<SeaTunnelRow> deserializationSchema;
    private JobContext jobContext;

    public AzureQueueStorageSource(
            AzureQueueSourceConfig config,
            CatalogTable catalogTable,
            DeserializationSchema<SeaTunnelRow> deserializationSchema) {
        this.config = config;
        this.catalogTable = catalogTable;
        this.deserializationSchema = deserializationSchema;
    }

    @Override
    public Boundedness getBoundedness() {
        if (jobContext != null) {
            if (!JobMode.STREAMING.equals(jobContext.getJobMode())) {
                throw new AzureQueueConnectorException(
                        AzureQueueConnectorErrorCode.CONFIGURATION_FAILED,
                        "Azure Queue Storage source supports streaming jobs only");
            }
            if (!jobContext.isEnableCheckpoint()) {
                throw new AzureQueueConnectorException(
                        AzureQueueConnectorErrorCode.CONFIGURATION_FAILED,
                        "Azure Queue Storage source requires checkpointing to delete messages");
            }
        }
        return Boundedness.UNBOUNDED;
    }

    @Override
    public String getPluginName() {
        return PLUGIN_NAME;
    }

    @Override

View on GitHub (pinned to cf67b549a7)

Solutions

  1. Set job.mode = "streaming" in the env block of the job config
  2. If a batch read is truly needed, use a different bounded source

Example fix

// before
env {
  job.mode = "BATCH"
}
// after
env {
  job.mode = "STREAMING"
}
Defensive patterns

Strategy: validation

Validate before calling

if (!"streaming".equalsIgnoreCase(env.get("job.mode"))) {
    throw new IllegalArgumentException("Azure Queue Storage source requires job.mode = streaming");
}

Prevention

When it happens

Trigger: Submitting a job with this source in BATCH job mode; getBoundedness() is consulted during source capability checks (shouldRequireStreamingModeWithCheckpointing).

Common situations: Users reusing a streaming config for a one-off backfill, or running 'seatunnel.sh' with -e local in batch mode by default without setting job.mode = streaming.

Understand the failure class

Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.

Related errors


AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10). Data as JSON: /api/errors/78b00877a315aa7f. Report an issue: GitHub.