I am trying to implement subcriber in C# console app using Dapr, but its giving the below error.
Error:
app channel not initialized, make sure -app-port is specified if pubsub subscription is required
Exited App successfully
terminated signal received: shutting down Exited Dapr successfully
Code:
public static void Main(string[] args)
{
DaprClient _dapr = new DaprClientBuilder().Build();
_dapr.PublishEventAsync("pubSubName", "topicName", "data");
}
I am able to solve the issue by converting the console app to windows (worker) service.
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);
}
}
}