I am new to Dapr as well as Kafka. Currently for my .NET 8 desktop app, I want to implement Dapr with Kafka(KRaft), for that I am working on POC, there I am facing issue that ‘Dapr.DaprException: ‘Publish operation failed: the Dapr endpoint indicated a failure’. ({“Status(StatusCode=”Unavailable”, Detail=”Error connecting to subchannel.”, DebugException=”System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it.”)”}).
docker-compose.yaml for Kafka image in Docker
version: "3.8"
services:
kafka:
image: docker.io/bitnami/kafka:3.7
container_name: kafka
ports:
- "9092:9092"
volumes:
- "kafka_data:/bitnami"
- "./kafka.keystore.jks:/bitnami/kafka/config/certs/kafka.keystore.jks"
- "./kafka.truststore.jks:/bitnami/kafka/config/certs/kafka.truststore.jks"
environment:
# KRaft settings
- KAFKA_ENABLE_KRAFT=yes
- KAFKA_CFG_NODE_ID=0
- KAFKA_CFG_PROCESS_ROLES=controller,broker
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093
# Listeners
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://:9092
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
- KAFKA_CFG_INTER_BROKER_LISTENER_NAME=PLAINTEXT
# Additional settings
- KAFKA_ADVERTISED_HOST_NAME=127.0.0.1
- KAFKA_CREATE_TOPICS="kafka-topic:1:1"
volumes:
kafka_data:
driver: local
Program.cs
using Dapr.Client;
class Program
{
static async Task Main(string[] args)
{
var services = new ServiceCollection();
ConfigureServices(services);
var serviceProvider = services.BuildServiceProvider();
var daprClient = serviceProvider.GetRequiredService<DaprClient>();
var message = new HelloMessage { Text = "Hello, Kafka!" };
await PublishMessageEvent(daprClient, message);
}
//const string topicName = "kafka-topic";
const string PUBSUB_NAME = "kafka-pubsub";
const string TOPIC_NAME = "kafka-topic";
static async Task PublishMessageEvent(DaprClient daprClient, HelloMessage message)
{
try
{
await daprClient.PublishEventAsync(PUBSUB_NAME, TOPIC_NAME, message);
Console.WriteLine("Event published successfully.");
}
catch (Exception ex)
{
Console.WriteLine($"Error publishing event: {ex.Message}");
}
}
static void ConfigureServices(IServiceCollection services)
{
string daprPort = Environment.GetEnvironmentVariable("DAPR_GRPC_PORT")!;
var grpcEndpoint = $"http://localhost:{daprPort}";
//var grpcEndpoint = $"http://localhost:52540";
// var channel = GrpcChannel.ForAddress("http://localhost:5009/");
// Register DaprClient instance using gRPC channel and DaprClientBuilder
var daprClient = new DaprClientBuilder()
.UseGrpcEndpoint(grpcEndpoint) // Specify the gRPC endpoint
.Build();
services.AddSingleton(daprClient);
}
}
public class HelloMessage
{
public string Text { get; set; } = default!;
}
Kafka pubsub yaml (Dapr configuration)
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: kafka-pubsub
namespace: default
spec:
type: pubsub.kafka
version: v1
metadata:
- name: brokers
value: "localhost:9092"
- name: consumerGroup
value: "my-group"
- name: authRequired
value: "false"
- name: disableTls
value: "true"
Here I have attched tried code and configuration(s).I have turned it off firewall as well.Eventhough I am facing same issue. Kindly help me out what I am really missing here. Thanks in advance.