lhotari opened a new issue, #23212:
URL: https://github.com/apache/pulsar/issues/23212

   ### Search before asking
   
   - [X] I searched in the [issues](https://github.com/apache/pulsar/issues) 
and found nothing similar.
   
   
   ### Motivation
   
   The Key_Shared implementation expects that the incoming message contain 
either a key/keyBytes or orderingKey. 
   If the key isn't set, the implementation will use the bytes of the NONE_KEY 
string as the key. This could be a surprise to users since the implications of 
not setting the key is not documented. 
   
   Another related detail is that there doesn't seem to be documentation (other 
than TypedMessageBuilder javadoc) for orderingKey and key/keyBytes and how 
orderingKey is preferred over the key/keyBytes for key_shared subscriptions. 
There's no documentation for the purpose of 2 separate keys.
   
   Broker side code:
   
https://github.com/apache/pulsar/blob/6236116754472c61b2166da6d4797fc63c83f364/pulsar-common/src/main/java/org/apache/pulsar/common/protocol/Commands.java#L1969-L1987
   
https://github.com/apache/pulsar/blob/82237d3684fe506bcb6426b3b23f413422e6e4fb/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/EntryAndMetadata.java#L52-L61
   
   Client code:
   
https://github.com/apache/pulsar/blob/10f4e0248f0f985b1dc7ad38970c906b7fe629be/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ConsumerBase.java#L1186-L1196
   
   The problem that this causes is that all messages without a key will handled 
by a single consumer. If any of these messages is  in redelivery, it will cause 
all message delivery to be blocked.
   
   ### Solution
   
   Replace the default NONE_KEY with a key that is derived from the producer 
name and producer sequence number.
   
   ### Alternatives
   
   Document the current behavior and requirement in 
https://pulsar.apache.org/docs/next/concepts-messaging/#key_shared.
   
   ### Anything else?
   
   _No response_
   
   ### Are you willing to submit a PR?
   
   - [ ] I'm willing to submit a PR!


-- 
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]

Reply via email to