[
https://issues.apache.org/jira/browse/CAMEL-24373?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Omar Atie updated CAMEL-24373:
------------------------------
Description:
[#camel > Alibaba Cloud
Component|https://camel.zulipchat.com/#narrow/channel/257298-camel/topic/Alibaba.20Cloud.20Component/with/615360201]
h2. Summary
Introduce a new \{{camel-alibaba}} parent module under \{{components/}} with
dedicated Camel components for Alibaba Cloud services, following the same
multi-module pattern used by \{{camel-aws}}, \{{camel-huawei}}, and
\{{camel-google}}.
Alibaba Cloud is a major public cloud provider, especially in APAC and for
organizations running hybrid/multi-cloud workloads. Apache Camel currently has
no first-class Alibaba Cloud integration module. Users must write custom glue
code around Alibaba SDKs instead of using route-based integration.
h2. Background / Motivation
* Alibaba Cloud provides a broad set of enterprise services (object storage,
messaging, serverless, secrets, eventing, SMS, etc.).
* Camel already integrates with comparable clouds:
** AWS → \{{camel-aws-parent}} (S3, SQS, SNS, Lambda, Secrets Manager, …)
** Huawei Cloud → \{{camel-huawei-parent}} (OBS, DMS, SMN, FunctionGraph, …)
** Google Cloud → \{{camel-google}} (Storage, Pub/Sub, Functions, Secret
Manager, …)
* \{{camel-rocketmq}} exists as a standalone component but does not cover the
wider Alibaba Cloud ecosystem or Alibaba-specific SDK/auth/endpoint conventions.
* A \{{camel-alibaba}} module would let route authors expose and consume
Alibaba Cloud services using familiar Camel URI patterns, configuration, health
checks, and documentation.
h2. Goal
Create a new \{{components/camel-alibaba/}} parent project with shared common
code and an initial set of Alibaba Cloud components, starting with high-demand
services and expanding incrementally.
h2. Proposed Module Structure
|| Module || URI scheme (proposed) || Alibaba Cloud service || Priority ||
| \{{camel-alibaba-common}} | — | Shared auth, region/endpoint handling, client
registry | MVP |
| \{{camel-alibaba-oss}} | \{{alibaba-oss:}} | Object Storage Service (OSS) |
MVP |
| \{{camel-alibaba-mns}} | \{{alibaba-mns:}} | Message Service (queue/topic
pub-sub) | MVP |
| \{{camel-alibaba-fc}} | \{{alibaba-fc:}} | Function Compute (invoke/manage
functions) | Phase 2 |
| \{{camel-alibaba-sms}} | \{{alibaba-sms:}} | Short Message Service | Phase 2 |
| \{{camel-alibaba-kms}} | \{{alibaba-kms:}} | Key Management Service | Phase 2
|
| \{{camel-alibaba-eventbridge}} | \{{alibaba-eventbridge:}} | EventBridge
(event routing) | Phase 2 |
| \{{camel-alibaba-sls}} | \{{alibaba-sls:}} | Log Service (Simple Log Service)
| Phase 3 |
| \{{camel-alibaba-ots}} | \{{alibaba-ots:}} | Table Store (wide-column NoSQL)
| Phase 3 |
_Note:_ Evaluate whether Alibaba Cloud RocketMQ should remain under existing
\{{camel-rocketmq}} with documented Alibaba endpoint configuration, or whether
a dedicated \{{camel-alibaba-rocketmq}} wrapper is needed for credential/region
consistency within \{{camel-alibaba}}.
h2. MVP Scope (first deliverable)
h3. 1. \{{camel-alibaba-common}}
* Shared configuration for:
** Region / endpoint override
** AccessKey + SecretKey (marked \{{secret=true}})
** RAM role / STS token support (via \{{credentials-java}} where applicable)
** Client reuse and \{{ClientRegistry}} pattern (align with
\{{camel-aws-common}} / \{{camel-huaweicloud-common}})
* Common constants, exception mapping, health check helpers
h3. 2. \{{camel-alibaba-oss}} — Object Storage
Producer and consumer support for common OSS operations (modeled after
\{{camel-aws2-s3}} and \{{camel-huaweicloud-obs}}):
* putObject / getObject / deleteObject / copyObject
* listBuckets / listObjects
* headObject / getObjectMetadata
* Presigned URL generation (if supported by SDK)
* Multipart upload for large objects
* Bucket existence checks
_Use official SDK:_ \{{com.aliyun:alibabacloud-oss-v2}} (preferred) or
documented stable OSS Java SDK.
_Example route:_
{code:java}
from("file:incoming")
.to("alibaba-oss:my-bucket?operation=putObject&objectName=${header.CamelFileName}");
from("alibaba-oss:my-bucket?operation=getObject&objectName=reports/2026-q1.pdf")
.to("file:output");
{code}
h3. 3. \{{camel-alibaba-mns}} — Message Service
* Publish to topic
* Send/receive/delete messages from queue
* Consumer with polling configuration (similar to SQS consumer patterns)
* Message attribute / delay support where SDK allows
h2. Phase 2 / Future Components
* \{{camel-alibaba-fc}} — invoke Function Compute functions (sync/async),
list/get function metadata
* \{{camel-alibaba-sms}} — send SMS messages
* \{{camel-alibaba-kms}} — encrypt/decrypt, generate data keys
* \{{camel-alibaba-eventbridge}} — publish/consume cloud events
* Properties functions for secrets/config resolution (similar to AWS Secrets
Manager / Parameter Store integrations) if applicable
h2. Technical Requirements
* Follow Camel component conventions:
** \{{Component}}, \{{Endpoint}}, \{{Producer}}, \{{Consumer}} classes
** \{{@UriPath}} / \{{@UriParam}} with descriptions and \{{secret=true}} on
credentials
** Generated JSON descriptor, AsciiDoc component page, catalog entry
* Register parent folder in \{{MojoHelper.getComponentPath()}} (same as
\{{camel-huawei}}, \{{camel-aws}})
* Use AssertJ in tests; Awaitility instead of \{{Thread.sleep()}}
* Integration tests where feasible (mock clients + optional
Testcontainers/emulator if available)
* Document credential setup, regions, and endpoint overrides
* Mark security-relevant options per \{{design/security.adoc}}
h2. Acceptance Criteria
* \{{camel-alibaba-parent}} added under \{{components/}} and wired into root
\{{components/pom.xml}}
* \{{camel-alibaba-common}} provides shared client/auth configuration reused by
OSS and MNS
* \{{camel-alibaba-oss}} component:
** Stable producer/consumer for core object operations
** Component documentation in \{{src/main/docs/}}
** Unit tests + integration tests for main operations
* \{{camel-alibaba-mns}} component:
** Publish/consume queue and topic operations
** Documentation and tests
* Components appear in Camel catalog and JBang component list after build
* No duplicate functionality with existing components unless explicitly
documented (e.g. RocketMQ)
* CI green (\{{mvn clean install -pl components/camel-alibaba -am}})
h2. References
* Alibaba Cloud OSS Java SDK 2.0:
https://www.alibabacloud.com/help/en/oss/developer-reference/oss-sdk-for-java-2-0/
* Alibaba Cloud Function Compute Java SDK: https://github.com/aliyun/fc-java-sdk
* Existing Camel cloud modules for reference:
** \{{components/camel-huawei/camel-huaweicloud-obs}} (OBS — closest analogue
to OSS)
** \{{components/camel-aws/camel-aws2-s3}}
** \{{components/camel-rocketmq}} (evaluate overlap)
h2. Open Questions (for discussion)
# Preferred URI prefix: \{{alibaba-oss:}} vs \{{aliyun-oss:}} vs
\{{alibabacloud-oss:}}?
# Should MVP target OSS + MNS only, or include Function Compute in the first PR?
# Is there community demand / contributor interest to co-maintain
\{{camel-alibaba}} long term?
# Are Alibaba Cloud emulators or local test doubles available for CI
integration tests?
h2. Labels (suggested)
{\{alibaba}}, \{{cloud}}, \{{new-feature}}, \{{oss}}, \{{integration}}
was:[#camel > Alibaba Cloud
Component|https://camel.zulipchat.com/#narrow/channel/257298-camel/topic/Alibaba.20Cloud.20Component/with/615360201]
> camel-alibaba - Add components for this cloud such as object storage and
> whatlese
> ---------------------------------------------------------------------------------
>
> Key: CAMEL-24373
> URL: https://issues.apache.org/jira/browse/CAMEL-24373
> Project: Camel
> Issue Type: New Feature
> Reporter: Claus Ibsen
> Priority: Major
> Fix For: 4.23.0
>
>
> [#camel > Alibaba Cloud
> Component|https://camel.zulipchat.com/#narrow/channel/257298-camel/topic/Alibaba.20Cloud.20Component/with/615360201]
> h2. Summary
> Introduce a new \{{camel-alibaba}} parent module under \{{components/}} with
> dedicated Camel components for Alibaba Cloud services, following the same
> multi-module pattern used by \{{camel-aws}}, \{{camel-huawei}}, and
> \{{camel-google}}.
> Alibaba Cloud is a major public cloud provider, especially in APAC and for
> organizations running hybrid/multi-cloud workloads. Apache Camel currently
> has no first-class Alibaba Cloud integration module. Users must write custom
> glue code around Alibaba SDKs instead of using route-based integration.
> h2. Background / Motivation
> * Alibaba Cloud provides a broad set of enterprise services (object storage,
> messaging, serverless, secrets, eventing, SMS, etc.).
> * Camel already integrates with comparable clouds:
> ** AWS → \{{camel-aws-parent}} (S3, SQS, SNS, Lambda, Secrets Manager, …)
> ** Huawei Cloud → \{{camel-huawei-parent}} (OBS, DMS, SMN, FunctionGraph, …)
> ** Google Cloud → \{{camel-google}} (Storage, Pub/Sub, Functions, Secret
> Manager, …)
> * \{{camel-rocketmq}} exists as a standalone component but does not cover the
> wider Alibaba Cloud ecosystem or Alibaba-specific SDK/auth/endpoint
> conventions.
> * A \{{camel-alibaba}} module would let route authors expose and consume
> Alibaba Cloud services using familiar Camel URI patterns, configuration,
> health checks, and documentation.
> h2. Goal
> Create a new \{{components/camel-alibaba/}} parent project with shared common
> code and an initial set of Alibaba Cloud components, starting with
> high-demand services and expanding incrementally.
> h2. Proposed Module Structure
> || Module || URI scheme (proposed) || Alibaba Cloud service || Priority ||
> | \{{camel-alibaba-common}} | — | Shared auth, region/endpoint handling,
> client registry | MVP |
> | \{{camel-alibaba-oss}} | \{{alibaba-oss:}} | Object Storage Service (OSS) |
> MVP |
> | \{{camel-alibaba-mns}} | \{{alibaba-mns:}} | Message Service (queue/topic
> pub-sub) | MVP |
> | \{{camel-alibaba-fc}} | \{{alibaba-fc:}} | Function Compute (invoke/manage
> functions) | Phase 2 |
> | \{{camel-alibaba-sms}} | \{{alibaba-sms:}} | Short Message Service | Phase
> 2 |
> | \{{camel-alibaba-kms}} | \{{alibaba-kms:}} | Key Management Service | Phase
> 2 |
> | \{{camel-alibaba-eventbridge}} | \{{alibaba-eventbridge:}} | EventBridge
> (event routing) | Phase 2 |
> | \{{camel-alibaba-sls}} | \{{alibaba-sls:}} | Log Service (Simple Log
> Service) | Phase 3 |
> | \{{camel-alibaba-ots}} | \{{alibaba-ots:}} | Table Store (wide-column
> NoSQL) | Phase 3 |
> _Note:_ Evaluate whether Alibaba Cloud RocketMQ should remain under existing
> \{{camel-rocketmq}} with documented Alibaba endpoint configuration, or
> whether a dedicated \{{camel-alibaba-rocketmq}} wrapper is needed for
> credential/region consistency within \{{camel-alibaba}}.
> h2. MVP Scope (first deliverable)
> h3. 1. \{{camel-alibaba-common}}
> * Shared configuration for:
> ** Region / endpoint override
> ** AccessKey + SecretKey (marked \{{secret=true}})
> ** RAM role / STS token support (via \{{credentials-java}} where applicable)
> ** Client reuse and \{{ClientRegistry}} pattern (align with
> \{{camel-aws-common}} / \{{camel-huaweicloud-common}})
> * Common constants, exception mapping, health check helpers
> h3. 2. \{{camel-alibaba-oss}} — Object Storage
> Producer and consumer support for common OSS operations (modeled after
> \{{camel-aws2-s3}} and \{{camel-huaweicloud-obs}}):
> * putObject / getObject / deleteObject / copyObject
> * listBuckets / listObjects
> * headObject / getObjectMetadata
> * Presigned URL generation (if supported by SDK)
> * Multipart upload for large objects
> * Bucket existence checks
> _Use official SDK:_ \{{com.aliyun:alibabacloud-oss-v2}} (preferred) or
> documented stable OSS Java SDK.
> _Example route:_
> {code:java}
> from("file:incoming")
>
> .to("alibaba-oss:my-bucket?operation=putObject&objectName=${header.CamelFileName}");
> from("alibaba-oss:my-bucket?operation=getObject&objectName=reports/2026-q1.pdf")
> .to("file:output");
> {code}
> h3. 3. \{{camel-alibaba-mns}} — Message Service
> * Publish to topic
> * Send/receive/delete messages from queue
> * Consumer with polling configuration (similar to SQS consumer patterns)
> * Message attribute / delay support where SDK allows
> h2. Phase 2 / Future Components
> * \{{camel-alibaba-fc}} — invoke Function Compute functions (sync/async),
> list/get function metadata
> * \{{camel-alibaba-sms}} — send SMS messages
> * \{{camel-alibaba-kms}} — encrypt/decrypt, generate data keys
> * \{{camel-alibaba-eventbridge}} — publish/consume cloud events
> * Properties functions for secrets/config resolution (similar to AWS Secrets
> Manager / Parameter Store integrations) if applicable
> h2. Technical Requirements
> * Follow Camel component conventions:
> ** \{{Component}}, \{{Endpoint}}, \{{Producer}}, \{{Consumer}} classes
> ** \{{@UriPath}} / \{{@UriParam}} with descriptions and \{{secret=true}} on
> credentials
> ** Generated JSON descriptor, AsciiDoc component page, catalog entry
> * Register parent folder in \{{MojoHelper.getComponentPath()}} (same as
> \{{camel-huawei}}, \{{camel-aws}})
> * Use AssertJ in tests; Awaitility instead of \{{Thread.sleep()}}
> * Integration tests where feasible (mock clients + optional
> Testcontainers/emulator if available)
> * Document credential setup, regions, and endpoint overrides
> * Mark security-relevant options per \{{design/security.adoc}}
> h2. Acceptance Criteria
> * \{{camel-alibaba-parent}} added under \{{components/}} and wired into root
> \{{components/pom.xml}}
> * \{{camel-alibaba-common}} provides shared client/auth configuration reused
> by OSS and MNS
> * \{{camel-alibaba-oss}} component:
> ** Stable producer/consumer for core object operations
> ** Component documentation in \{{src/main/docs/}}
> ** Unit tests + integration tests for main operations
> * \{{camel-alibaba-mns}} component:
> ** Publish/consume queue and topic operations
> ** Documentation and tests
> * Components appear in Camel catalog and JBang component list after build
> * No duplicate functionality with existing components unless explicitly
> documented (e.g. RocketMQ)
> * CI green (\{{mvn clean install -pl components/camel-alibaba -am}})
> h2. References
> * Alibaba Cloud OSS Java SDK 2.0:
> https://www.alibabacloud.com/help/en/oss/developer-reference/oss-sdk-for-java-2-0/
> * Alibaba Cloud Function Compute Java SDK:
> https://github.com/aliyun/fc-java-sdk
> * Existing Camel cloud modules for reference:
> ** \{{components/camel-huawei/camel-huaweicloud-obs}} (OBS — closest analogue
> to OSS)
> ** \{{components/camel-aws/camel-aws2-s3}}
> ** \{{components/camel-rocketmq}} (evaluate overlap)
> h2. Open Questions (for discussion)
> # Preferred URI prefix: \{{alibaba-oss:}} vs \{{aliyun-oss:}} vs
> \{{alibabacloud-oss:}}?
> # Should MVP target OSS + MNS only, or include Function Compute in the first
> PR?
> # Is there community demand / contributor interest to co-maintain
> \{{camel-alibaba}} long term?
> # Are Alibaba Cloud emulators or local test doubles available for CI
> integration tests?
> h2. Labels (suggested)
> {\{alibaba}}, \{{cloud}}, \{{new-feature}}, \{{oss}}, \{{integration}}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)