-1

我需要在 Windows 服务中实现 Dapr 订阅者,我可以在 Asp.Net API 中实现它。但不在 Windows 服务中,是否有任何解决方法可以做到这一点?

4

1 回答 1

0

在 Windows 服务中实现这一点有一个技巧。

我们需要添加一个控制器

[ApiController]
public class DaprController : ControllerBase
{

    public DaprController()
    {
    }

    [Topic("pubSubName", "topicName")]
    [HttpPost("/topicName")]
    public ActionResult ProcessData([FromBody] string data)
    {
        return Ok();
    }
}

另外,我们需要像这样添加一个 startup.cs 文件。

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

namespace Publisher
{
    public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers().AddDapr();
            services.AddLogging();
        }

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseRouting();

            app.UseAuthorization();

            app.UseCloudEvents();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
                endpoints.MapSubscribeHandler();
            });
        }
    }
}

并在 Program.cs 文件中添加以下代码。

.ConfigureWebHostDefaults((builder) =>
                {
                    builder.UseStartup<Startup>();
                })

参考: https ://docs.microsoft.com/en-us/dotnet/architecture/dapr-for-net-developers/publish-subscribe#use-the-dapr-net-sdk

于 2021-12-10T13:08:09.977 回答