[ 
https://issues.apache.org/jira/browse/BEAM-2451?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16053016#comment-16053016
 ] 

Reuven Lax commented on BEAM-2451:
----------------------------------

The intention of the withTimestampAttribute/withIdAttribute was for the runner 
to automatically fill in those attributes. This is done by the Dataflow runner, 
which has it's own built-in PubSub implementation (it does not use 
PubsubUnboundedSink). For other runners, as you mentioned the ShardFn will 
calculate the timestamp and attributes. This was not meant as a way to write 
custom values, all these methods do is tell the runner (or the sink in the 
non-Dataflow case) which attributes to fill in.

If you want to put your own, user-calculated timestamp or id on a message, you 
shouldn't use withTimestampAttribute or withIdAttribute. Just create your own 
PubsubMessage, and write whatever attributes you want. Turning a proto message 
into a byte array is as simple as calling tobyteArray() on the message (and 
parseFrom when reading it back).

> writeProtos() should allow a user to specify message attributes
> ---------------------------------------------------------------
>
>                 Key: BEAM-2451
>                 URL: https://issues.apache.org/jira/browse/BEAM-2451
>             Project: Beam
>          Issue Type: Improvement
>          Components: sdk-java-core
>    Affects Versions: 2.0.0
>            Reporter: Keith Berkoben
>            Assignee: Reuven Lax
>
> when using PubsubIO.writeProtos(protoMessage), the PubsubMessage is created 
> in the background and there is no way to specify the attributes of the 
> message.  This makes the method useless if a user wants to then use the 
> withTimestampAttribute() or withIdAttribute() of the writer with anything 
> other than the default timestamp or ID (a common use case).  
> As a workaround the user can manually create the PubsubMessage, but this 
> basically requires duplication of the writeProtos() logic, which is brittle 
> in the case that the encoding logic changes.  



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to