EventHorizon.RocketMQ.Remoting 0.5.0
Behavior
- Align broker-assigned POP failure settlement with Apache RocketMQ Java
rocketmq-all-5.5.0. - A negative
RemotingPushConsumeContext.DelayLevelWhenNextConsumeis now normalized to POP retry level0; POP changes message invisibility and no longer performs classic direct-DLQ send-back followed by receipt ACK. - Internal PULL behavior is unchanged: a negative delay remains an explicit direct-DLQ request, and retry-policy exhaustion still sends the message to DLQ.
- POP maximum-attempt handling remains Java-compatible and age-based: defer while the message is too young, then ACK after the terminal age threshold, without implicit DLQ forwarding.
Validation
- Added live Remoting DLQ coverage for concurrent PULL,
MessageGroup, and orderly consumption. Retry-policy cases invoke the handler twice: the initial failure, one retry, then DLQ. - Added live gRPC FIFO Push, non-FIFO Push, and LitePush DLQ coverage with the same one-retry boundary. No new gRPC package is published by this release.
- PR CI passed format/build, all unit and .NET 8 checks, Codecov, and all four single-/multi-Broker Docker integration suites.
Compatibility
The primary released references are Java Remoting rocketmq-all-5.5.0 and Java gRPC java-5.2.1; released Go clients v2.1.2 and golang/v5.1.2 are secondary comparisons.
This is a pre-1.0 behavior change for applications that used a negative delay to force direct DLQ while the internal Push assignment selected POP. Such POP deliveries now follow the official Java retry path. The remaining released-Java SUSPEND differences are tracked in #25.
Full change: PR #26