apache/seatunnel · error · RabbitmqConnectorException

RABBITMQ-09

RABBITMQ-09

Error message

setup ssl factory failed

What it means

RabbitmqClient.createConnectionFactory throws RabbitmqConnectorException(SETUP_SSL_FACTORY_FAILED) when building the SSL/TLS ConnectionFactory. SSLContext initialization calls sslContext.getInstance(protocol) and this NoSuchAlgorithmException branch means the JVM has no provider for the requested TLS protocol algorithm, so the secure factory cannot be created.

Source

Thrown at seatunnel-connectors-v2/connector-rabbitmq/src/main/java/org/apache/seatunnel/connectors/seatunnel/rabbitmq/client/RabbitmqClient.java:114

     */
    public DefaultConsumer getQueueingConsumer(
            BlockingQueue<DeliveryMessage> queue, String splitId) {
        return new QueueingConsumer(channel, queue, splitId);
    }

    private ConnectionFactory createConnectionFactory() {
        ConnectionFactory factory = new ConnectionFactory();
        if (StringUtils.isNotEmpty(config.getUri())) {
            try {
                factory.setUri(config.getUri());
            } catch (URISyntaxException e) {
                throw new RabbitmqConnectorException(PARSE_URI_FAILED, e);
            } catch (KeyManagementException e) {
                // this should never happen
                throw new RabbitmqConnectorException(INIT_SSL_CONTEXT_FAILED, e);
            } catch (NoSuchAlgorithmException e) {
                // this should never happen
                throw new RabbitmqConnectorException(SETUP_SSL_FACTORY_FAILED, e);
            }
        } else {
            factory.setHost(config.getHost());
            factory.setPort(config.getPort());
            if (StringUtils.isNotEmpty(config.getVirtualHost())) {
                factory.setVirtualHost(config.getVirtualHost());
            }
            factory.setUsername(config.getUsername());
            factory.setPassword(config.getPassword());
        }

        if (config.getAutomaticRecovery() != null) {
            factory.setAutomaticRecoveryEnabled(config.getAutomaticRecovery());
        }
        if (config.getConnectionTimeout() != null) {
            factory.setConnectionTimeout(config.getConnectionTimeout());
        }
        if (config.getNetworkRecoveryInterval() != null) {

View on GitHub (pinned to cf67b549a7)

Solutions

  1. Check the JVM used by SeaTunnel (java -version, and which JDK installs the engine) and switch to a full Oracle/OpenJDK build that supports the required TLS version
  2. Inspect $JAVA_HOME/conf/security/java.security and re-enable the disabled TLS algorithm in jdk.tls.disabledAlgorithms
  3. If the client wraps TLSContext.getProtocol(), set an explicitly supported protocol via the RabbitMQ SSL config options rather than relying on defaults
  4. As a temporary workaround set useSsl=false if the broker allows plaintext connections on a trusted network

Example fix

// before
factory.useSslProtocol(); // relies on default TLS algorithm missing from JVM
// after
SSLContext ctx = SSLContext.getInstance("TLSv1.2"); // explicitly supported protocol
factory.useSslProtocol(ctx);
Defensive patterns

Strategy: validation

Validate before calling

String proto = "TLSv1.2";
try {
  javax.net.ssl.SSLContext.getInstance(proto);
  System.out.println("TLS provider available");
} catch (NoSuchAlgorithmException e) {
  throw new IllegalStateException("JVM lacks provider for " + proto + "; fix JDK/security config", e);
}

Type guard

boolean tlsSupported(String proto) {
  try { javax.net.ssl.SSLContext.getInstance(proto); return true; }
  catch (Exception e) { return false; }
}

Prevention

When it happens

Trigger: useSsl=true in the RabbitMQ config and SSLContext.getInstance(...) throws NoSuchAlgorithmException because the configured/implicit TLS algorithm (e.g. TLSv1.2/TLSv1.3) has no provider in the current JVM.

Common situations: Running on a stripped-down or older JRE/JDK without certain TLS providers; misconfigured java.security (jdk.tls.disabledAlgorithms removing all supported protocols); custom JVM builds (e.g. some JRE distributions lacking TLSv1.3) used to launch the SeaTunnel Zeta engine.

Understand the failure class

Related errors


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