RockteMQ-AI commented on issue #10545: URL: https://github.com/apache/rocketmq/issues/10545#issuecomment-4811722292
**Issue Evaluation** Category: `type/enhancement` | Status: **Evaluated** **Feasibility:** Feasible **Scope:** `client` module — `TransactionMQProducer`, `DefaultMQProducerImpl` **Compatibility:** Fully backward-compatible (new overload method) The proposal is well-reasoned. Current `TransactionMQProducer#sendMessageInTransaction(Message, Object)` hardcodes `null` as the `MessageQueueSelector` when delegating to `DefaultMQProducerImpl#sendMessageInTransaction(msg, null, arg)`. The suggested approach is correct: 1. Add a new overload `sendMessageInTransaction(msg, selector, arg)` in both `TransactionMQProducer` and `DefaultMQProducerImpl` 2. Existing method delegates to the new one with `selector=null` — zero breaking change 3. `TransactionSendResult` and `LocalTransactionState` are unaffected 4. `TransactionListener` and retry semantics remain unchanged **One consideration:** The current `sendKernelImpl` path already supports `MessageQueueSelector` for non-transaction messages. The transaction path should follow the same `select(queueList, msg, arg)` contract. Verify that `queueId` from the selector is correctly propagated through the half-message and commit/rollback paths. This is a clean, low-risk enhancement. A PR would be welcome. --- *Automated evaluation by github-manager-bot* -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
