信頼できるメッセージ配送のための配備
少なくとも一回のメッセージの送信のためにどうやって配備しますか?
少なくとも一回のメッセージ送信とは何か の中で説明されたように、Gearpump は組み込みのKafkaSourceを持ちます。少なくとも一回のメッセージの配信をするためには、ユーザはGearpumpクラスタと一緒にオフセットのストアとしてKafkaクラスタを配備する必要があります。
以下はローカル Kafkaクラスタを配備する例です。
-
最新のKafkaを公式webサイトからダウンロードし、ローカルディレクトリ (
$KAFKA_HOME
)に解凍します -
Kafkaにパッケージ化されている1ノードのZookeeperインスタンスを立ち上げます。
$KAFKA_HOME/bin/zookeeper-server-start.sh $KAFKA_HOME/config/zookeeper.properties
-
Kafka brokerを開始します
$KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/kafka.properties
-
KafkaSource
のためのオフセットストアを生成する場合、zookeeper接続文字列をlocalhost:2181
に設定し、 inKafkaStorageFactory
内のブローカーリストをlocalhost:9092
に設定します。val offsetStorageFactory = new KafkaStorageFactory("localhost:2181", "localhost:9092") val source = new KafkaSource("topic1", "localhost:2181", offsetStorageFactory)
確実に1回のメッセージ配送のためにどうやって配備しますか?
確実に一回のメッセージ配送にはオフセットストアとチェックポイントストアの両方が必要です。オフセットストアに関しては、Kafkaクラスタは前の章のように配備される必要があります。チェックポイントストアに関しては、GearpumpはHDFSのようなHadoopファイルシステムのための組み込みのサポートを持ちます。従って、ユーザはGearpumpクラスタと並行して、HDFSクラスタを配備する必要があります。
以下はローカルHDFSクラスタを配備する例です。
-
Hadoop2.6を公式のwebサイトからダウンロードし、それをローカルディレクトリ
HADOOP_HOME
に解凍します -
以下の設定を
$HADOOP_HOME/etc/core-site.xml
に追加します<configuration> 属性 <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration>
-
HDFSを開始します
$HADOOP_HOME/sbin/start-dfs.sh
-
HadoopCheckpointStore
を生成する場合は、core-site.xml
にあるようにhadoop設定を設定します。val hadoopConfig = new Configuration hadoopConfig.set("fs.defaultFS", "hdfs://localhost:9000") val checkpointStoreFactory = new HadoopCheckpointStoreFactory("MessageCount", hadoopConfig, // rotate on 1KB new FileSizeRotation(1000))