Я пытаюсь запустить простой конвейер Apache Beam с DirectRunner
, который читает из подписки Pub / Sub и записывает сообщения на диск.
Конвейер работает нормально, когда я запускаю его на GCP, однако, когда я пытаюсь запустить его на своем локальном эмуляторе Pub / Sub, он, похоже, ничего не делает.
Я использую пользовательский класс Options
, который расширяет класс org.apache.beam.sdk.io.gcp.pubsub.PubsubOptions
.
public interface Options extends PubsubOptions {
@Description("Pub/Sub subscription to read the input from")
@Required
ValueProvider<String> getInputSubscription();
void setInputSubscription(ValueProvider<String> valueProvider);
}
конвейер довольно прост
pipeline
.apply("Read Pub/Sub Messages", PubsubIO.readMessagesWithAttributes()
.fromSubscription(options.getInputSubscription()))
.apply("Add a fixed window", Window.into(FixedWindows.of(Duration.standardSeconds(WINDOW_SIZE))))
.apply("Convert Pub/Sub To String", new PubSubMessageToString())
.apply("Write Pub/Sub messages to local disk", new WriteOneFilePerWindow());
Конвейер выполнен со следующими параметрами
mvn compile exec:java \
-Dexec.mainClass=DefaultPipeline \
-Dexec.cleanupDaemonThreads=false \
-Dexec.args=" \
--project=my-project \
--inputSubscription=projects/my-project/subscriptions/my-subscription \
--pubsubRootUrl=http://127.0.0.1:8681 \
--runner=DirectRunner"
Я использую этот образ докера эмулятора Pub / Sub и выполняю его с помощью следующей команды:
docker run --rm -ti -p 8681:8681 -e PUBSUB_PROJECT1=my-project,topic:my-subscription marcelcorso/gcloud-pubsub-emulator:latest
Требуется ли дополнительная настройка для этой работы?