samples/pub-sub-routing
Phil Kedy 5b354143de
Adding pubsub sample (#82)
2021-09-27 16:29:42 -07:00
..
components Adding pubsub sample (#82) 2021-09-27 16:29:42 -07:00
messages Adding pubsub sample (#82) 2021-09-27 16:29:42 -07:00
.gitignore Adding pubsub sample (#82) 2021-09-27 16:29:42 -07:00
Dockerfile Adding pubsub sample (#82) 2021-09-27 16:29:42 -07:00
README.md Adding pubsub sample (#82) 2021-09-27 16:29:42 -07:00
app.js Adding pubsub sample (#82) 2021-09-27 16:29:42 -07:00
config.yaml Adding pubsub sample (#82) 2021-09-27 16:29:42 -07:00
package.json Adding pubsub sample (#82) 2021-09-27 16:29:42 -07:00

README.md

Dapr Pub-Sub routing

In this quickstart, you'll run a subscriber application that makes use of Pub-Sub routing. The application can be quickly changed to:

  • Toggle between programmatic and declarative subscriptions (or use both as long as there is no overlap)
  • Add other routing rules with different CEL expressions
  • Enable/disable routing (disable PubSub.Routing in config.yaml)

Note: Because this example is intended to be something to play around with, it makes use of the in-memory pubsub component and is not intended to be deployed to Kubernetes.

Install dependencies

npm install

Run the application

dapr run --app-id pubsub-routing --config config.yaml --components-path ./components --app-port 3000 node app.js

Switch between programmatic and declarative subscriptions

In app.js, the handler for /dapr/subscribe returns the programmatic subscriptions. The contents are commented out to demonstrate usage of a declarative subscription in components/subscription.yaml.

You can switch from declarative to programmatic subscriptions by:

  1. Changing kind: Subscription to kind: Subscription_disabled in components/subscription.yaml so that daprd does not load the file
  2. Uncommenting the JSON response for /dapr/subscribe in app.js
  3. Stop (CTRL-C) and restart the application using the dapr run command above

Publish messages to route

Try the following curl commands in a separate terminal.

Publish a widget

curl -s http://localhost:3000/publish -H Content-Type:application/json --data @messages/widget.json

Publish a gadget

curl -s http://localhost:3000/publish -H Content-Type:application/json --data @messages/gadget.json

Publish a thingamajig

curl -s http://localhost:3000/publish -H Content-Type:application/json --data @messages/thingamajig.json
dapr stop --app-id pubsub-routing