2017-10-30 10 views
0

私はKafkaのプロデューサーとコンシューマーを作ろうとしていますが、私のプロジェクトはdotnet Core 2.0で、kafkaとうまく動作していないようです。これは私が思いついた概念の証明です。私はカフカネットnugetパッケージでのVisual Studio 2017を使用しています:kafkaはdotnet coreをサポートしていますか?

私がプロデューサーを実行しようとすると

using KafkaNet; 
using KafkaNet.Model; 
using KafkaNet.Protocol; 

プロデューサー

static void Main(string[] args) 
{ 
    string payload = "Welcome to Kafka!"; 
    string topic = "IDGTestTopic"; 
    Message msg = new Message(payload); 
    Uri uri = new Uri("localhost:9092"); 
    var options = new KafkaOptions(uri); 
    var router = new BrokerRouter(options); 
    var client = new Producer(router); 
    client.SendMessageAsync(topic, new List<Message> { msg }).Wait(); 
    Console.ReadLine(); 
} 

消費者

static void Main(string[] args) 
{ 
    string topic = "IDGTestTopic"; 
    Uri uri = new Uri("http://localhost:9092"); 
    var options = new KafkaOptions(uri); 
    var router = new BrokerRouter(options); 
    var consumer = new Consumer(new ConsumerOptions(topic, router)); 
    foreach (var message in consumer.Consume()) 
    { 
     Console.WriteLine(Encoding.UTF8.GetString(message.Value)); 
    } 
    Console.ReadLine(); 
} 

を使用してまず、BrokerRouterにエラーメッセージが表示されます。

$exception {System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. 
Parameter name: port 
at System.Net.IPEndPoint..ctor(IPAddress address, Int32 port) 
at KafkaNet.DefaultKafkaConnectionFactory.Resolve(Uri kafkaAddress, IKafkaLog log) 
at KafkaNet.Model.KafkaOptions.<get_KafkaServerEndpoints>d__0.MoveNext() 
at KafkaNet.BrokerRouter..ctor(KafkaOptions kafkaOptions) 
at SampleKafkaProducer.Program.Main(String[] args) in C:\v4target\SampleKafka\SampleKafkaProducer\SampleKafkaProducer\Program.cs:line 18} System.ArgumentOutOfRangeException 

ポートの範囲はどのくらいですか?私のVisual Studioプロジェクトは、55000のポートで実行されています。私が調査した複数の情報源はカフカのポートとして9092を使用しています。

誰もがエラーメッセージを理解していますか?私がKafkaのバージョンをdotnetコアに対応していないので、主な問題の一部ですか?

+0

少なくとも例外を引き起こしたコード行を教えてくれる例外からstacktrace全体を投稿してください。その情報は貴重です。 – nos

+0

ありがとうございます@nos。私は正確なスタックトレースを取得しましたが、ポートにつながっています。エラーは、KafkaOptionsを取り込むBrokerRouter()で始まりますが、ここで問題が何であるかはわかりません。 –

答えて

1

問題はURIにあります。

Uri uri = new Uri( "localhost:9092");

uri.Portを印刷すると、-1になります。したがって、ArgumentOutOfRangeException。 KafkaNet Repositoryから

Uri uri = new Uri("http://localhost:9092"); 

ではなく、これを試してみてください。これは、URIを設定する方法です。

var options = new KafkaOptions(new Uri("http://CSDKAFKA01:9092"), new Uri("http://CSDKAFKA02:9092")) 
{ 
    Log = new ConsoleLog() 
}; 
関連する問題