[
https://issues.apache.org/jira/browse/CAMEL-24373?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18104874#comment-18104874
]
Omar Atie commented on CAMEL-24373:
-----------------------------------
_AI-generated on behalf of atiaomar1978-hub_
Hi Claus,
Thank you for the detailed reviews on the camel-alibaba work. Below is a status
update against your comments and the phased plan in the JIRA description.
h3. Delivery status
|| Phase || PR || Status || Components ||
| Phase 1 (MVP) | [#25433|https://github.com/apache/camel/pull/25433] |
*Merged* (2026-08-12) | \{{camel-alibaba-common}}, \{{camel-alibaba-oss}},
\{{camel-alibaba-mns}} |
| Phase 2 | [#25474|https://github.com/apache/camel/pull/25474] | *Merged*
(2026-08-14) | \{{camel-alibaba-fc}}, \{{camel-alibaba-sms}},
\{{camel-alibaba-kms}}, \{{camel-alibaba-eventbridge}} |
| Phase 3 | [#25498|https://github.com/apache/camel/pull/25498] | *Open* —
rebase/merge conflict in progress | \{{camel-alibaba-sls}},
\{{camel-alibaba-ots}} |
h3. Your review comments — addressed
*Phase 1 (#25433)* — all review threads are resolved on GitHub. In particular:
* OSS SDK removed from \{{camel-alibaba-common}}; common is now limited to
shared helpers (\{{ServiceKeys}}, \{{OpenApiClientSupport}}).
* OSS client lifecycle fixed in \{{OSSEndpoint.initClient()}}.
* \{{secret = true}} applied on credential \{{@UriParam}}s (OSS and MNS).
* OSS URI redesigned to \{{alibaba-oss:bucketName?operation=...}} (bucket in
path, operation as query param).
* OSS producer no longer serializes results with Gson; responses are structured
\{{Map<String, Object>}} / typed bodies.
* BOM/catalog wired for \{{4.23.0-SNAPSHOT}}.
*Phase 2 (#25474)* — substantive items addressed in the merged code:
* Phase 2 producers (FC, SMS, KMS, EventBridge) now set response metadata via
*message headers* (e.g. \{{REQUEST_ID}}), not exchange properties.
* \{{Alibaba*}} class prefix adopted (e.g. \{{AlibabaEventBridgeProducer}}) —
aligned with your follow-up in
[0e9bca4|https://github.com/apache/camel/commit/0e9bca4749ed133d3fe4b202cde6b5d969a95fdd].
* EventBridge Gson dependency is now explicit in the module POM (no longer
relies on transitive SDK bundling).
* \{{camel-alibaba-common}} no longer pulls SDK-specific dependencies.
*Phase 3 (#25498)* — follows the same patterns and your \{{Alibaba*}} naming
guidance. Producers delegate to \{{endpoint.initClient()}} per exchange (Bugbot
follow-up) so a shut-down client is not reused after route restart.
h3. Remaining follow-ups (acknowledged)
A few items from your reviews are still open or only partially addressed on
\{{main}}:
# *MNS producer metadata* — \{{MNSProducer}} still sets \{{MESSAGE_ID}},
\{{REQUEST_ID}}, and \{{MESSAGE_BODY_MD5}} via \{{exchange.setProperty(...)}}.
Phase 2 producers were moved to headers; MNS should be aligned the same way.
# *\{{PrepareCatalogMojo}} ordering* — \{{case "camel-alibaba":}} is still
placed between \{{camel-google}} and \{{camel-google-common}}; will move to
correct alphabetical position.
# *Phase 3 PR* — [#25498|https://github.com/apache/camel/pull/25498] needs
rebase on current \{{main}} to clear the merge conflict you noted. CI is
currently \{{UNSTABLE}}.
# *Unresolved GitHub threads on #25474* — several of your review threads are
still marked unresolved even though the code changes landed; I will resolve
those after the remaining nits above are pushed.
h3. JIRA scope — intentionally deferred (for discussion)
The phased PRs cover the module table in the description (OSS, MNS, FC, SMS,
KMS, EventBridge, SLS, OTS). The following original JIRA items are *not* in
scope of phases 1–3 and would need separate follow-up tickets if we want them:
* RAM role / STS token support in common (currently AK/SK only via
\{{ServiceKeys}})
* Shared \{{ClientRegistry}} pattern (currently per-endpoint \{{initClient()}})
* OSS presigned URLs, multipart upload, bucket-existence checks
* FC async invoke and \{{listFunctions}}
* EventBridge consumer (currently producer-only \{{putEvents}})
* Properties functions for secrets/config resolution
* Dedicated \{{camel-alibaba-rocketmq}} wrapper (MNS docs currently point users
to existing \{{camel-rocketmq}})
* Live integration tests (current tests use mocked SDK clients)
h3. Next steps
# Rebase and land [#25498|https://github.com/apache/camel/pull/25498] (SLS +
OTS).
# Push a small follow-up PR for MNS header consistency and
\{{PrepareCatalogMojo}} ordering.
# Resolve remaining review threads on #25474.
# Set \{{fixVersions}} and transition this issue once Phase 3 is merged and CI
is green.
Happy to adjust scope on any of the deferred items if you prefer some of them
before closing the JIRA.
Thanks again for the thorough reviews.
> 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)