{"action":"created","issue":{"url":"https://api.github.com/repos/dotnet/orleans/issues/1205","labels_url":"https://api.github.com/repos/dotnet/orleans/issues/1205/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/orleans/issues/1205/comments","events_url":"https://api.github.com/repos/dotnet/orleans/issues/1205/events","html_url":"https://github.com/dotnet/orleans/issues/1205","id":123675482,"number":1205,"title":"Kafka based persistent stream provider","user":{"login":"yoniabrahamy","id":10047833,"avatar_url":"https://avatars.githubusercontent.com/u/10047833?v=3","gravatar_id":"","url":"https://api.github.com/users/yoniabrahamy","html_url":"https://github.com/yoniabrahamy","followers_url":"https://api.github.com/users/yoniabrahamy/followers","following_url":"https://api.github.com/users/yoniabrahamy/following{/other_user}","gists_url":"https://api.github.com/users/yoniabrahamy/gists{/gist_id}","starred_url":"https://api.github.com/users/yoniabrahamy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yoniabrahamy/subscriptions","organizations_url":"https://api.github.com/users/yoniabrahamy/orgs","repos_url":"https://api.github.com/users/yoniabrahamy/repos","events_url":"https://api.github.com/users/yoniabrahamy/events{/privacy}","received_events_url":"https://api.github.com/users/yoniabrahamy/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/dotnet/orleans/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":3,"created_at":"2015-12-23T15:11:43Z","updated_at":"2015-12-24T06:39:23Z","closed_at":null,"body":"Hello all,\r\nThis is not really an issue, I just wanted to write in this forum that I have implemented a persistent stream provider based on Kafka. You can check it out here: https://github.com/gigya/Orleans.KafkaStreamProvider\r\n\r\nI would love to get some feedbacks about it, we are already using it in a system on production environment and it seems to be working pretty great. \r\n\r\nIf you have any questions I'll try to write some answers in the following week (although I'm on a Christmas holiday, so I will do my best :sweat_smile:).\r\n\r\nHappy holidays!"},"comment":{"url":"https://api.github.com/repos/dotnet/orleans/issues/comments/167055355","html_url":"https://github.com/dotnet/orleans/issues/1205#issuecomment-167055355","issue_url":"https://api.github.com/repos/dotnet/orleans/issues/1205","id":167055355,"user":{"login":"gabikliot","id":10171207,"avatar_url":"https://avatars.githubusercontent.com/u/10171207?v=3","gravatar_id":"","url":"https://api.github.com/users/gabikliot","html_url":"https://github.com/gabikliot","followers_url":"https://api.github.com/users/gabikliot/followers","following_url":"https://api.github.com/users/gabikliot/following{/other_user}","gists_url":"https://api.github.com/users/gabikliot/gists{/gist_id}","starred_url":"https://api.github.com/users/gabikliot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gabikliot/subscriptions","organizations_url":"https://api.github.com/users/gabikliot/orgs","repos_url":"https://api.github.com/users/gabikliot/repos","events_url":"https://api.github.com/users/gabikliot/events{/privacy}","received_events_url":"https://api.github.com/users/gabikliot/received_events","type":"User","site_admin":false},"created_at":"2015-12-24T06:39:23Z","updated_at":"2015-12-24T06:39:23Z","body":"Looking through the code, I noticed you are offloading a lot to Thread Pool - going via [`Task.Run`]\r\n(https://github.com/gigya/Orleans.KafkaStreamProvider/blob/master/src/Orleans.KafkaStreamProvider/KafkaQueue/KafkaQueueAdapterReceiver.cs#L58). Any particular reason to do that? Look [here](http://dotnet.github.io/orleans/Advanced-Concepts/External-Tasks-and-Grains) for cases when one may want to do this, but I am not sure yours is the case.\r\nSpecifically, [here](https://github.com/gigya/Orleans.KafkaStreamProvider/blob/master/src/Orleans.KafkaStreamProvider/KafkaQueue/KafkaQueueAdapterReceiver.cs#L101) `Task.Run` is totaly redundant.\r\n\r\nAlso, why do you need [ClientGenerator](https://github.com/gigya/Orleans.KafkaStreamProvider/tree/master/src/ClientGenerator) and ClientGenerator/Serialization.\r\n\r\n"}}