{"record":{"id":"f3fb11c77e183805","repo":"apache/seatunnel","slug":"rabbitmq-09","errorCode":"RABBITMQ-09","errorMessage":"setup ssl factory failed","messagePattern":"setup ssl factory failed","errorType":"error_code","errorClass":"RabbitmqConnectorException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-rabbitmq/src/main/java/org/apache/seatunnel/connectors/seatunnel/rabbitmq/client/RabbitmqClient.java","lineNumber":114,"sourceCode":"     */\n    public DefaultConsumer getQueueingConsumer(\n            BlockingQueue<DeliveryMessage> queue, String splitId) {\n        return new QueueingConsumer(channel, queue, splitId);\n    }\n\n    private ConnectionFactory createConnectionFactory() {\n        ConnectionFactory factory = new ConnectionFactory();\n        if (StringUtils.isNotEmpty(config.getUri())) {\n            try {\n                factory.setUri(config.getUri());\n            } catch (URISyntaxException e) {\n                throw new RabbitmqConnectorException(PARSE_URI_FAILED, e);\n            } catch (KeyManagementException e) {\n                // this should never happen\n                throw new RabbitmqConnectorException(INIT_SSL_CONTEXT_FAILED, e);\n            } catch (NoSuchAlgorithmException e) {\n                // this should never happen\n                throw new RabbitmqConnectorException(SETUP_SSL_FACTORY_FAILED, e);\n            }\n        } else {\n            factory.setHost(config.getHost());\n            factory.setPort(config.getPort());\n            if (StringUtils.isNotEmpty(config.getVirtualHost())) {\n                factory.setVirtualHost(config.getVirtualHost());\n            }\n            factory.setUsername(config.getUsername());\n            factory.setPassword(config.getPassword());\n        }\n\n        if (config.getAutomaticRecovery() != null) {\n            factory.setAutomaticRecoveryEnabled(config.getAutomaticRecovery());\n        }\n        if (config.getConnectionTimeout() != null) {\n            factory.setConnectionTimeout(config.getConnectionTimeout());\n        }\n        if (config.getNetworkRecoveryInterval() != null) {","sourceCodeStart":96,"sourceCodeEnd":132,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-rabbitmq/src/main/java/org/apache/seatunnel/connectors/seatunnel/rabbitmq/client/RabbitmqClient.java#L96-L132","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","solutions":["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","Inspect $JAVA_HOME/conf/security/java.security and re-enable the disabled TLS algorithm in jdk.tls.disabledAlgorithms","If the client wraps TLSContext.getProtocol(), set an explicitly supported protocol via the RabbitMQ SSL config options rather than relying on defaults","As a temporary workaround set useSsl=false if the broker allows plaintext connections on a trusted network"],"exampleFix":"// before\nfactory.useSslProtocol(); // relies on default TLS algorithm missing from JVM\n// after\nSSLContext ctx = SSLContext.getInstance(\"TLSv1.2\"); // explicitly supported protocol\nfactory.useSslProtocol(ctx);","handlingStrategy":"validation","validationCode":"String proto = \"TLSv1.2\";\ntry {\n  javax.net.ssl.SSLContext.getInstance(proto);\n  System.out.println(\"TLS provider available\");\n} catch (NoSuchAlgorithmException e) {\n  throw new IllegalStateException(\"JVM lacks provider for \" + proto + \"; fix JDK/security config\", e);\n}","typeGuard":"boolean tlsSupported(String proto) {\n  try { javax.net.ssl.SSLContext.getInstance(proto); return true; }\n  catch (Exception e) { return false; }\n}","tryCatchPattern":null,"preventionTips":["Use a full OpenJDK/Oracle JDK build for the SeaTunnel engine, not a stripped JRE","Review jdk.tls.disabledAlgorithms after JDK upgrades","Test SSL connectivity to RabbitMQ in a smoke job before production"],"tags":["rabbitmq","ssl","tls","jvm","configuration"],"backgroundTag":"ssl-context-init-failed","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}