You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is your feature request related to a problem? Please describe.
I have a use case for processing messages in a TableView where I need to be able to access the metadata (e.g. publication time) for each message, for example to check if the message for a key is "out-of-date" or recent.
Currently this is not possible as the TableView implementation only provides the message as encoded by the SchemaValueType and discards all metadata.
Describe the solution you'd like
I would like to introduce two new methods to the TableView interface for accessing the associated pulsar.Message for each key:
Message(key string) Message - access the pulsar.Message for a given key (as an alternative to Get)
2.Messages() map[string]Message - access all the stored pulsar.Message objects for each key (as an alternative to Entries)
I propose to do this by changing how the messages are processed - instead of storing the encoded payload in processMessage, instead we store a map of map[string]Message. Backwards compatibility will be maintained by always returning the payload in the existing methods.
Describe alternatives you've considered
Alternatives include:
There are no current alternatives for accessing message metadata while using TableView.
Instead of changing any of the storage implementation, we can add a new map which additionally stores a mapping from key to pulsar.Message, and only use this map for the two new methods. I initially decided against this to avoid duplicating the logic for storing messages.
Additional context
NA.
Please let me know if this requires any further design or improvement documentation, happy to provide more detail if needed.
The text was updated successfully, but these errors were encountered:
Is your feature request related to a problem? Please describe.
I have a use case for processing messages in a TableView where I need to be able to access the metadata (e.g. publication time) for each message, for example to check if the message for a key is "out-of-date" or recent.
Currently this is not possible as the TableView implementation only provides the message as encoded by the SchemaValueType and discards all metadata.
Describe the solution you'd like
I would like to introduce two new methods to the TableView interface for accessing the associated
pulsar.Message
for each key:Message(key string) Message
- access thepulsar.Message
for a given key (as an alternative toGet
)2.
Messages() map[string]Message
- access all the storedpulsar.Message
objects for each key (as an alternative toEntries
)I propose to do this by changing how the messages are processed - instead of storing the encoded payload in
processMessage
, instead we store a map of map[string]Message. Backwards compatibility will be maintained by always returning the payload in the existing methods.Describe alternatives you've considered
Alternatives include:
There are no current alternatives for accessing message metadata while using TableView.
Instead of changing any of the storage implementation, we can add a new map which additionally stores a mapping from key to
pulsar.Message
, and only use this map for the two new methods. I initially decided against this to avoid duplicating the logic for storing messages.Additional context
NA.
Please let me know if this requires any further design or improvement documentation, happy to provide more detail if needed.
The text was updated successfully, but these errors were encountered: