[ 
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)

Reply via email to