Skip to content

Commit

Permalink
Added .NET implementation detail for streaming subscription support
Browse files Browse the repository at this point in the history
Signed-off-by: Whit Waldo <[email protected]>
  • Loading branch information
WhitWaldo committed Sep 16, 2024
1 parent 90c0906 commit 8aa1212
Showing 1 changed file with 41 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,47 @@ As messages are sent to the given message handler code, there is no concept of r

The example below shows the different ways to stream subscribe to a topic.

{{< tabs Go>}}
{{< tabs ".NET" Go>}}

{{% codetab %}}

```csharp
using Dapr.Messaging.PublishSubscribe;
var clientBuilder = new DaprPublishSubscribeClientBuilder();
var daprMessagingClient = clientBuilder.Build();
async Task<TopicResponseAction> HandleMessage(TopicMessage message, CancellationToken cancellationToken = default)
{
try
{
//Do something with the message
Console.WriteLine(Encoding.UTF8.GetString(message.Data.Span));
return await Task.FromResult(TopicResponseAction.Success);
}
catch
{
return await Task.FromResult(TopicResponseAction.Retry);
}
}
//Create a dynamic streaming subscription
var subscription = daprMessagingClient.Register("pubsub", "myTopic",
new DaprSubscriptionOptions(new MessageHandlingPolicy(TimeSpan.FromSeconds(15), TopicResponseAction.Retry)),
HandleMessage, CancellationToken.None);
//Subscribe to messages on it with a timeout of 30 seconds
var cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(30));
await subscription.SubscribeAsync(cancellationTokenSource.Token);
await Task.Delay(TimeSpan.FromMinutes(1));
//When you're done with the subscription, simply dispose of it
await subscription.DisposeAsync();
```

{{% /codetab %}}

{{% codetab %}}

Expand Down

0 comments on commit 8aa1212

Please sign in to comment.