[ 
https://issues.apache.org/jira/browse/CAMEL-24373?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Omar Atie reassigned CAMEL-24373:
---------------------------------

    Assignee: Omar Atie

> 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
>            Assignee: Omar Atie
>            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