Added an example for DotNet bulk subscribing (#3281)

* Added an example for DotNet bulk subscribing

Signed-off-by: Sabrina Shepherd <sabrina@nuqleous.com>

* Update daprdocs/content/en/developing-applications/building-blocks/pubsub/pubsub-bulk.md

Signed-off-by: Sabrina Shepherd <sabrinashepherd@outlook.com>

* Update daprdocs/content/en/developing-applications/building-blocks/pubsub/pubsub-bulk.md

Signed-off-by: Mark Fussell <markfussell@gmail.com>

---------

Signed-off-by: Sabrina Shepherd <sabrina@nuqleous.com>
Signed-off-by: Sabrina Shepherd <sabrinashepherd@outlook.com>
Signed-off-by: Mark Fussell <markfussell@gmail.com>
Co-authored-by: Mark Fussell <markfussell@gmail.com>
This commit is contained in:
Sabrina Shepherd 2023-04-05 22:50:27 +00:00 committed by GitHub
parent 4ffbc22527
commit c0d1e6a931
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 51 additions and 1 deletions

View File

@ -334,7 +334,7 @@ Please refer [Expected HTTP Response for Bulk Subscribe]({{< ref pubsub_api.md >
Please refer following code samples for how to use Bulk Subscribe:
{{< tabs Java Javascript "HTTP API (Bash)" "HTTP API (PowerShell)" >}}
{{< tabs "Java" "JavaScript" ".NET" "HTTP API (Bash)" "HTTP API (PowerShell)" >}}
{{% codetab %}}
@ -406,6 +406,56 @@ async function start() {
{{% /codetab %}}
{{% codetab %}}
```csharp
using Microsoft.AspNetCore.Mvc;
using Dapr.AspNetCore;
using Dapr;
namespace DemoApp.Controllers;
[ApiController]
[Route("[controller]")]
public class BulkMessageController : ControllerBase
{
private readonly ILogger<BulkMessageController> logger;
public BulkMessageController(ILogger<BulkMessageController> logger)
{
this.logger = logger;
}
[BulkSubscribe("messages", 10, 10)]
[Topic("pubsub", "messages")]
public ActionResult<BulkSubscribeAppResponse> HandleBulkMessages([FromBody] BulkSubscribeMessage<BulkMessageModel<BulkMessageModel>> bulkMessages)
{
List<BulkSubscribeAppResponseEntry> responseEntries = new List<BulkSubscribeAppResponseEntry>();
logger.LogInformation($"Received {bulkMessages.Entries.Count()} messages");
foreach (var message in bulkMessages.Entries)
{
try
{
logger.LogInformation($"Received a message with data '{message.Event.Data.MessageData}'");
responseEntries.Add(new BulkSubscribeAppResponseEntry(message.EntryId, BulkSubscribeAppResponseStatus.SUCCESS));
}
catch (Exception e)
{
logger.LogError(e.Message);
responseEntries.Add(new BulkSubscribeAppResponseEntry(message.EntryId, BulkSubscribeAppResponseStatus.RETRY));
}
}
return new BulkSubscribeAppResponse(responseEntries);
}
public class BulkMessageModel
{
public string MessageData { get; set; }
}
}
```
{{% /codetab %}}
{{< /tabs >}}
## How components handle publishing and subscribing to bulk messages