Prompt: Write a sample Java code snippet that writes data to a Google Pub/Sub topic using Apache Beam.
Response: Your Apache Beam pipeline can write data to a Google Pub/Sub topic using the Apache Beam PubSubIO connector.
Here is an example of how to use the PubSubIO connector to accomplish this:
package pubsub; import org.apache.beam.sdk.Pipeline; import org.apache.beam.sdk.io.gcp.pubsub.PubsubIO; import org.apache.beam.sdk.options.Description; import org.apache.beam.sdk.options.PipelineOptions; import org.apache.beam.sdk.options.PipelineOptionsFactory; import org.apache.beam.sdk.transforms.Create; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Arrays; import java.util.List; // Pipeline to write data to a Google Pub/Sub topic public class WritePubSubTopic { private static final Logger LOG = LoggerFactory.getLogger(WritePubSubTopic.class); // Pipeline options to configure the pipeline public interface WritePubSubTopicOptions extends PipelineOptions { @Description("PubSub topic name to write to") String getTopicName(); void setTopicName(String value); } public static void main(String[] args) { // Parse the pipeline options from the command line WritePubSubTopicOptions options = PipelineOptionsFactory.fromArgs(args).withValidation().as(WritePubSubTopicOptions.class); // Create a pipeline Pipeline p = Pipeline.create(options); // Sample messages to write to the Pub/Sub topic final List<String> messages = Arrays.asList( "PubSub message 1", "PubSub message 2", "PubSub message 3" ); p // Create a list of messages to write to the Pub/Sub topic .apply(Create.of(messages)) // Write the messages to the Pub/Sub topic .apply(PubsubIO.writeStrings().to(options.getTopicName())); // Execute the pipeline p.run(); } }
This code snippet utilizes the pipeline options pattern to parse command-line arguments.