/// <summary> /// 処理を実行します。 /// </summary> /// <returns></returns> static async Task RunAsync() { int process = System.Diagnostics.Process.GetCurrentProcess().Id; Console.WriteLine($"パブリッシャーをプロセス {process} で起動しました。"); // コンソールからパラメーターを受け取る Console.WriteLine("bootstrap servers を入力してください(省略時 127.0.0.1):"); var bootstrapServers = Console.ReadLine(); if (string.IsNullOrEmpty(bootstrapServers)) { bootstrapServers = "127.0.0.1"; } Console.WriteLine($"トピックを入力してください(省略時 {Constants.DefaultTopic}):"); var topic = Console.ReadLine(); if (string.IsNullOrEmpty(topic)) { topic = Constants.DefaultTopic; } // キャンセルトークンを生成する using var cancelTokenSource = new CancellationTokenSource(); Console.CancelKeyPress += (_, e) => { e.Cancel = true; cancelTokenSource.Cancel(); }; // 動作設定を生成する var publisherSetting = new MessagePublisherSetting() { BootstrapServers = bootstrapServers };
/// <summary> /// インスタンスを生成します。 /// </summary> /// <param name="keySerializer">キーに対するシリアライザ</param> /// <param name="messageSerializer">メッセージに対するシリアライザ</param> /// <param name="setting">プロデューサーの動作設定</param> /// <param name="keyGenerator">キーの生成処理</param> /// <param name="topic">トピック</param> /// <param name="logger">ロガー</param> public MessagePublisher(ISerializer <TKey> keySerializer, ISerializer <TMessage> messageSerializer, MessagePublisherSetting setting, string topic, Func <TKey> keyGenerator, ILogger logger) { KeySerializer = keySerializer; MessageSerializer = messageSerializer; Topic = topic; KeyGenerator = keyGenerator; Logger = logger; Producer = BuildProducer(GetProducerConfig(setting)); }
/// <summary> /// プロデューサーの動作設定を取得します。 /// </summary> /// <param name="producerSetting">プロデューサーの動作設定</param> /// <returns>動作設定のキーと値の組み合わせ</returns> protected virtual IEnumerable <KeyValuePair <string, string> > GetProducerConfig(MessagePublisherSetting producerSetting) { if (producerSetting.BootstrapServers == null || producerSetting.BootstrapServers == "") { throw new NullReferenceException("ブートストラップサーバーが設定されていません。"); } return(new ProducerConfig() { BootstrapServers = producerSetting.BootstrapServers, }); }
/// <summary> /// インスタンスを生成します。 /// </summary> /// <param name="publisherSetting">パブリッシャーの動作設定</param> /// <param name="logger">ロガー</param> protected MessagePublisherFactoryBase(MessagePublisherSetting publisherSetting, ILogger logger) { PublisherSetting = publisherSetting; Logger = logger; }
/// <summary> /// インスタンスを生成します。 /// </summary> /// <param name="publisherSetting">パブリッシャーの動作設定</param> /// <param name="logger">ロガー</param> internal SampleMessagePublisherFactory(MessagePublisherSetting publisherSetting, ILogger logger) : base(publisherSetting, logger) { }