olehborysevych commented on code in PR #29507:
URL: https://github.com/apache/beam/pull/29507#discussion_r1411163791


##########
learning/prompts/code-explaination/02_io_pubsub.md:
##########
@@ -0,0 +1,34 @@
+Prompt:
+What does this code do?
+```python
+pipeline_options = PipelineOptions(pipeline_args)
+
+with beam.Pipeline(options=options) as p:
+    (p | "Read" >> ReadFromPubSub(subscription=input_subscription)
+       | "Process" >> ParDo(ProcessMessage())
+       | "Write" >> WriteToPubSub(topic=output_topic))
+```
+
+Response:
+This code reads messages from a [PubSub](https://cloud.google.com/pubsub) 
subscription `input_subscription` using the `ReadFromPubSub`, processes them 
and writes the resulting collection to a PubSub topic `output_topic` using the 
`WriteToPubSub` transform.
+
+PubSub is currently supported only in streaming pipelines.
+
+Reading messages directly from a topic is also supported. In this case a 
temporary subscription will be created automatically.
+
+`ReadFromPubSub` produces a `PCollection` of `PubsubMessage` objects or a 
`PCollection` of byte sequences. Behavior is controlled by the 
`with_attributes` parameter with byte sequences being the default.
+For more on PCollections see the [Beam Programming 
Guide](https://beam.apache.org/documentation/basics/#pcollection).
+
+Processing of the messages is done by the `ProcessMessage` class. This class 
is a subclass of the `DoFn` class.
+Simplest implementation of ProcessMesageclass could be something like:
+
+```python
+class ProcessMessage(beam.DoFn):
+    def process(self, element):
+        yield element
+```
+More on `DoFn` class can be found 
[here](https://beam.apache.org/documentation/programming-guide/#dofn).
+
+See [PubSub 
IO](https://beam.apache.org/releases/pydoc/current/apache_beam.io.gcp.pubsub.html)
 transform documentation for more details.
+
+For a common pattern for configuring pipeline options see here [Pipeline 
option 
pattern](https://beam.apache.org/documentation/patterns/pipeline-options/).

Review Comment:
   Done



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to