Exemplo n.º 1
0
        /// <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
            };
Exemplo n.º 2
0
 /// <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));
 }
Exemplo n.º 3
0
        /// <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,
            });
        }
Exemplo n.º 4
0
 /// <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)
 {
 }