{"action":"opened","issue":{"url":"https://api.github.com/repos/dotnet/orleans/issues/4758","repository_url":"https://api.github.com/repos/dotnet/orleans","labels_url":"https://api.github.com/repos/dotnet/orleans/issues/4758/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/orleans/issues/4758/comments","events_url":"https://api.github.com/repos/dotnet/orleans/issues/4758/events","html_url":"https://github.com/dotnet/orleans/issues/4758","id":340313826,"node_id":"MDU6SXNzdWUzNDAzMTM4MjY=","number":4758,"title":"Event hub steam provider questions","user":{"login":"galmicrosoft","id":37621810,"node_id":"MDQ6VXNlcjM3NjIxODEw","avatar_url":"https://avatars2.githubusercontent.com/u/37621810?v=4","gravatar_id":"","url":"https://api.github.com/users/galmicrosoft","html_url":"https://github.com/galmicrosoft","followers_url":"https://api.github.com/users/galmicrosoft/followers","following_url":"https://api.github.com/users/galmicrosoft/following{/other_user}","gists_url":"https://api.github.com/users/galmicrosoft/gists{/gist_id}","starred_url":"https://api.github.com/users/galmicrosoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/galmicrosoft/subscriptions","organizations_url":"https://api.github.com/users/galmicrosoft/orgs","repos_url":"https://api.github.com/users/galmicrosoft/repos","events_url":"https://api.github.com/users/galmicrosoft/events{/privacy}","received_events_url":"https://api.github.com/users/galmicrosoft/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2018-07-11T16:19:39Z","updated_at":"2018-07-11T16:19:39Z","closed_at":null,"author_association":"NONE","body":"Hi All, I have some questions regarding streaming in Orleans in general, and specifically streaming using Event Hub Stream Provider.\r\nI’ll briefly describe my scenario: I have a worker role (non-Orleans) that gets messages from an event hub. Each message belongs to some provider (there can be thousands of providers). The worker role then sends the message to a grain for this specific provider using streaming (there’s a separate stream for each provider grain). The processing of each message by the grain may take some time, and that’s why I want to send the message over a persistent queue, to decouple the sending from the handling of the message (unlike SMS provider). \r\nIn addition, there’s an accumulation of data in the grain itself, and it in its turn sends the accumulated data to another service. That’s why I want the stream to be rewindable – if the silo crushed before the grain had sent the data batch, I want to process the messages from the begging of the batch.\r\nThat’s why the event hub stream provider seems like the correct choice, and that’s how I was thinking of using it:\r\nWhen the first message of the batch arrives to the grain, I will save its token in the (persisted) state of the grain. When the batch is sent, I’ll update the token to the last message received, and use a flag to indicate that I want to get messages with a newer token (the first message of the next batch). In this way, if the silo crushes before I’ve sent the batch, the grain will start processing messages from the last token saved.\r\n1.\tCan I consider event hub stream provider as ready for production systems? I don’t see any documentation for it, but I see it’s been released long time ago and it’s been used by 343 industries.\r\n2.\tHow many different streams does the event hub stream provider support? In the documentation states that “By default Orleans Streaming is targeted to support a large number of relatively small streams”. So it’s seems ok, but I wanted to be sure.\r\n3.\tWhen I played with the event hub stream provider I tried to pass null to the StreamSequenceToken parameter on ResumeAsync, expecting it to provider new events. But every time I started the Silo I got all the events that I previously sent. I have a workaround for this that I mentioned above, but I’m wondering what the reason for this behavior is. \r\nThanks!\r\nGal\r\n"}}
{"actor":{"display_login":"galmicrosoft"}}