LoginSignup
9
8

More than 5 years have passed since last update.

google cloud pubsub で大量データのやり取りをしてみた

Last updated at Posted at 2017-11-26

google cloud pubsubを試した。

publisherとして、10万件連番のデータを送った。結果、22件程度抜けが発生した。どこにバグが有るのかよくわからない。十分テストする必要がありそうだ。

追記

pub/subへのpublishをflunetdのfluent-plugin-gcloud-pubsub-customに任せた所、50万件送信中、一件の抜けもなくなった。
一旦pub/subに取り込まれたものが抜けることとは無いが、自前で、publishするときにはretryを含めた処理が必要なのだろう。

サンプルコード

pub.py,sub.py,common.py,.envを落としてきて同じ場所に置く。
.envは環境に応じて書き換える。

TOPIC='[TOPIC_NAME]' <-生成したトピック名
GOOGLE_CLOUD_PROJECT='[PROJECT_ID]' <- プロジェクトID
SUBSCRIBE='[SUBSCRIBER_NAME]' <- トピックから作ったサブスクライバー
MONGO_DB='MONGO_DB_NAME' <- mongoにデータを貯めるので、mongoを入れる
JSON_KEY='PATH_TO_JSON_KEY' <- サービスアカウントのjsonキー(pubsubへの権限を与えておく)

テスト方法

pub.pyでデータをpublishする。
sub.pyでそのtopicからデータを取得しmongoに入れる。
check.pyでcountが連番であるか調査する。

./pub.py --part 10 --size 5000

partはcountを複数回するのでそれを識別するためのもの。sizeは送信するメッセージの個数

./sub.py

でデータを取ってくる。

./check.py --part 10

check.pyでcountが連番になっており欠けが無いか調査する。

テスト結果

次の番号が、一つ前の数値から1以上離れていた(つまり欠けが発生している)。

INFO:root:part=10 size=89989
INFO:root:13652
INFO:root:28995
INFO:root:29891
INFO:root:31986
INFO:root:33931
INFO:root:36939
INFO:root:37590
INFO:root:41001
INFO:root:46992
INFO:root:50001
INFO:root:52974
INFO:root:61001
INFO:root:66001
INFO:root:70966
INFO:root:84001
INFO:root:86001
INFO:root:88001
INFO:root:90990
INFO:root:94001
INFO:root:97001
INFO:root:99001
9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8