googlePubsubRThis library offers an easy to use interface for the Google Pub/Sub REST API (docs here).
Not an official Google product.
You can install the package from CRAN or get the dev
version from Github:
install.packages("googlePubsubR")
# Or get the dev version from Github
devtools::install_github("andodet/googlePubsubR@dev")In order to use the library, you will need:
pubsub_auth or setting an
GCP_AUTH_FILE env variable.GCP_PROJECT env variable set with a valid GCP project
id. Since 0.0.3, GCP project id can also be set using
ps_project_set.On a very basic level, the library can be used to publish messages,
pull and acknowledge them.
The following example shows how to:
library(googlePubsubR)
library(base64enc)
library(jsonlite)
# Authenticate 
pubsub_auth()
# Create resources
topic_readme <- topics_create("readme-topic")
sub_readme <- subscriptions_create("readme-sub", topic_readme)
# Prepare the message
msg <- mtcars %>%
  toJSON(auto_unbox = TRUE) %>%
  # Pub/Sub expects a base64 encoded string
  msg_encode() %>% 
  PubsubMessage() 
# Publish the message!
topics_publish(msg, topic_readme)
# Pull the message from server
msgs_pull <- subscriptions_pull(sub_readme)
msg_decoded <- msgs_pull$receivedMessages$message$data %>%
  msg_decode() %>% 
  fromJSON()
head(msg_decoded)
# Prints
# mpg cyl disp  hp drat    wt  qsec vs am gear carb
# Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
# Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
# Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
# Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
# Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
# Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
# We can acknowledge that the message has been consumed
subscriptions_ack(msgs_pull$receivedMessages$ackId, sub_readme)
# [1] TRUE
# A subsequent pull will return no messages from the server
subscriptions_pull(sub_readme)
# named list()
# Cleanup resources
topics_delete(topic_readme)
subscriptions_delete(sub_readme)The main use-cases for Pub/Sub messaging queue:
{plumbr}In order to contribute to googlePubsubR you’ll need to
go through the following steps:
Set up a GCP project and create a service account with Pub/Sub admin rights.
Download a JSON key for the newly created account. Naming the
file .gcp_creds.json and placing it in the package root
folder will make it automatically gitignored.
Set up the following env vars (either through a tool like
direnv or a .Renviron file).
GCP_AUTH_FILE=<paht_to_json_auth_file>
GCP_PROJECT=<gcp_project_id_string>Check everything is set up correctly by running a test run via
devtools::test().