1.0 API Feedback
See original GitHub issueThis issue is to track community feedback on the new 1.0 API and document changes that are likely to be made before it’s release. We’ll continue to update this first comment to reflect open changes currently under consideration & progress.
For problems, please open another issue.
Comments / suggestions? Add them below!
Current changes under consideration for 1.0:
- add
async
serializers/deserializers (serdes that returnTask
s) in addition to simple serde types. ProduceAsync
- correctly implement aCancellationToken
parameter.AdminClient.GetMetadata
- remove this method and add methods analogous to the Java client.ListGroups
- parse the group data and change the return type.Span<T>
serializers.- return types from
AdminClient
methods. Even though it’s not useful now, a return type from e.g.CreateTopicsAsync
would allow for easier future extensibility. - how should we communicate that a subscription didn’t match any topics?
- Exception types corresponding to more
ErrorCode
s. - Investigate making
Consumer<,>
implementIEnumerable
. - pass message headers to deserializers
Commit
to throwCommitException
, notTopicPartitionOffsetException
.
Review TODOs:
- Add
SCRAM-SHA-1
sasl mechanism. - Avro serializers should have adaptive buffer sizing.
- Reconsider various strongly typed config enum names. in particular:
Sasl_Plaintext
,Sasl_Ssl
,Roundrobin
,Ssl
. - Ordering of configuration is important to librdkafka. this isn’t compatible with use of
Dictionary<K,V>
. - Check that the float and double serdes are IEEE-754 compatible. Consider using
IPAddress.HostToNetworkOrder
.
Issue Analytics
- State:
- Created 5 years ago
- Reactions:2
- Comments:49 (37 by maintainers)
Top Results From Across the Web
1.0 API Feedback · Issue #777 · confluentinc/confluent- ...
net client aware of the allowable values (duplicating functionality in librdkafka, and requiring the two versions be maintained), or having the ...
Read more >Feedback API — fjord 1.0.dev documentation
Posting product feedback: POST /api/v1/feedback/. Testing clients using the API; Required fields; Optional fields; Extra context; Minimal example with curl ...
Read more >Feedback API quick guide
Feedback API. To start using the Feedback interface, you can upload translation incidents feedback for review via the Feedback API.
Read more >It looks like the AJAX Search API is in "Version 1.0." What ...
The AJAX Search API is still in its early stages, hence the "1.0" version ... to add features and make significant changes based...
Read more >Threat Prevention API 1.0 Reference Guide
Best Practices · Query the API for cached entries for the features of the request. · If the features are not found, upload...
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
Here we go again…
This “blocking” concern, just isn’t one. It is completely typical (especially with interop things). But we’ve had this discussion before. Suffice to say, doing async over sync is just fine. Of course, you don’t get the nice thread offloading by letting the IO system track it. But… this is far more acceptable than doing sync over async. Which is what trying to do both sync and async serdes in the same method forces us to do. So, if I use avro, or some other async serdes, I still do not get any benefit from Task/async! And we just get all the pain with zero gain.
I get and appreciate, that you’re trying to do “the right thing” and factor things in a compact way. But it leads it into an async pickle.
Deserializer
also takes aSerializationContext
(this would actually be useful if you’re using json, msgpack, others). Then you could have…So, we keep Consumer as pure sync and just wrap the async serde with the standard sync-over-async pattern. The Builder can deal with the wrapping and the Consumer is none the wiser.
Yes this is just a different method of hiding the async’ness of the async serdes, but, at least it vastly simplifies the Consumer.