Dapr 应用程序通道未初始化,如果需要 pubsub 订阅,请确保指定 -app-port
Posted
技术标签:
【中文标题】Dapr 应用程序通道未初始化,如果需要 pubsub 订阅,请确保指定 -app-port【英文标题】:Dapr app channel not initialized, make sure -app-port is specified if pubsub subscription is required 【发布时间】:2022-01-15 02:37:47 【问题描述】:我正在尝试使用 Dapr 在 C# 控制台应用程序中实现订阅者,但它给出了以下错误。
错误:
应用程序通道未初始化,请确保指定 -app-port 如果 需要订阅 pubsub
成功退出应用
收到终止信号:成功关闭 Exited Dapr
代码:
public static void Main(string[] args)
DaprClient _dapr = new DaprClientBuilder().Build();
_dapr.PublishEventAsync("pubSubName", "topicName", "data");
【问题讨论】:
【参考方案1】:我可以通过将控制台应用程序转换为 windows (worker) 服务来解决这个问题。
public static void Main(string[] args)
CreateHostBuilder(args).Build().Run();
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
services.AddHostedService<MyService>();
)
.ConfigureWebHostDefaults((builder) =>
builder.UseStartup<Startup>();
);
public class Startup
public void ConfigureServices(IServiceCollection services)
services.AddDaprClient();
public void Configure()
public class MyService: BackgroundService
private readonly DaprClient _dapr;
public PaymentService(DaprClient dapr)
_dapr = dapr;
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
while (!stoppingToken.IsCancellationRequested)
await _dapr.PublishEventAsync();
await Task.Delay(1000, stoppingToken);
【讨论】:
以上是关于Dapr 应用程序通道未初始化,如果需要 pubsub 订阅,请确保指定 -app-port的主要内容,如果未能解决你的问题,请参考以下文章