Skip to main content

pub/sub trigger by Cloud Scheduler - cloud function - firebase emulator for pub/sub

The problem:

sending notifications to the owner of the expired listing

The solution:

  • target pub/sub - publish messages with Cloud scheduler on 11 pm daily
  • create topic/subscription - "cron-topic" / "sub_push_cron"
    delivery type: push (pull )
    setup endpoint on backend NodeJS use NGROK to make the local NODE server available for Google Pub/Sub
    https://3274d032fcc7.ngrok.io/copper?token=YOUR_TOKEN_00hfMQOXpD
  • axios Graphql API: processExpiredListins (getExpiredListins => owners => sendNotificaton)

The Benefit:

  1. why no cloud function needed? 
    https://cloud.google.com/scheduler/docs/tut-pub-sub


Firebase Emulator

firebase emulators:start

need start emulator in order to make NGROK works for local server, also need create topic/subscription in local

mutation {
createPubSubTopic(topicName: "copper")

}

mutation {
createPubSubPushSubscription(topicName: "copper", subscriptionName: "sub_push_copper")

}

scheduled

 https://firebase.google.com/docs/functions/schedule-functions


cloud Firestore trigger

https://firebase.google.com/docs/functions/firestore-events


to install pubsub emulator:

https://cloud.google.com/pubsub/docs/emulator

1. install google cloud sdk
https://cloud.google.com/sdk/docs/quickstart

2. gcloud components install pubsub-emulator

/Users/junwang/Downloads/google-cloud-sdk/bin/gcloud components install pubsub-emulator

3.  start emlator
/Users/junwang/Downloads/google-cloud-sdk/bin/gcloud beta emulators pubsub start

firebase emulators:start 

https://itnext.io/firebase-emulator-suite-6b51446ca2e7

firebase int
firebase emulator:start

schedule google cloud function:
https://cloud.google.com/scheduler/docs/tut-pub-sub




Comments

Popular posts from this blog

A component is changing an uncontrolled input of type text to be controlled error in ReactJS - Formik

 https://stackoverflow.com/questions/47012169/a-component-is-changing-an-uncontrolled-input-of-type-text-to-be-controlled-erro default value can't be undefined  case 'listingBrokerOfficeName' : value = ( listingBroker || {}). officeName break change to: case 'listingBrokerOfficeName' : value = ( listingBroker || {}). officeName || '' break

apollo client v3 - clean up non-needed packages

v3: https://github.com/apollographql/apollo-client clean up: ApolloProvider useQuery, useMutation, useApolloClient Apollo Client >= 3 includes React hooks functionality out of the box. You don't need to install any additional packages. https://www.apollographql.com/docs/react/api/react/hooks/ //import { ApolloProvider } from '@apollo/react-hooks' import { ApolloProvider } from '@apollo/client/react' //import { useQuery, useMutation, useApolloClient } from '@apollo/react-hooks' import { useQuery, useMutation, useApolloClient } from '@apollo/client' How i can CATCH any error (network and graphql), and prevent promise.reject()  https://github.com/apollographql/apollo-client/issues/6469 npm uninstall @apollo/react-hooks https://github.com/apollographql/apollo-link npm uninstall apollo-link npm uninstall apollo-client npm uninstall apollo-link-error npm uninstall apollo-link-http npm uninstall apollo-link-ws npm uninstall apollo-cache-inmemory