diff --git a/howto/setup-pub-sub-message-broker/README.md b/howto/setup-pub-sub-message-broker/README.md index d10ce3aec..30b10463f 100644 --- a/howto/setup-pub-sub-message-broker/README.md +++ b/howto/setup-pub-sub-message-broker/README.md @@ -45,3 +45,4 @@ kubectl apply -f pubsub.yaml [Setup Redis Streams](./setup-redis.md) [Setup NATS](./setup-nats.md) [Setup Azure Service bus](./setup-azure-servicebus.md) +[Setup RabbitMQ](./setup-rabbitmq.md) diff --git a/howto/setup-pub-sub-message-broker/setup-rabbitmq.md b/howto/setup-pub-sub-message-broker/setup-rabbitmq.md new file mode 100644 index 000000000..c67371e81 --- /dev/null +++ b/howto/setup-pub-sub-message-broker/setup-rabbitmq.md @@ -0,0 +1,82 @@ +# Setup RabbitMQ + +## Locally + +You can run a RabbitMQ server locally using Docker: + +``` +docker run -d --hostname my-rabbit --name some-rabbit rabbitmq:3 +``` + +You can then interact with the server using the client port: `localhost:5672`. + +## Kubernetes + +The easiest way to install RabbitMQ on Kubernetes is by using the [Helm chart](https://github.com/helm/charts/tree/master/stable/rabbitmq): + +``` +helm install --name rabbitmq stable/rabbitmq +``` + +Look at the chart output and get the username and password. + +This will install RabbitMQ into the `default` namespace. +To interact with RabbitMQ, find the service with: `kubectl get svc rabbitmq`. + +For example, if installing using the example above, the RabbitMQ server client address would be: + +`rabbitmq.default.svc.cluster.local:5672` + +## Create a Dapr component + +The next step is to create a Dapr component for RabbitMQ. + +Create the following YAML file named `rabbitmq.yaml`: + +``` +apiVersion: dapr.io/v1alpha1 +kind: Component +metadata: + name: +spec: + type: pubsub.rabbitmq + metadata: + - name: host + value: # Required. Example: "rabbitmq.default.svc.cluster.local:5672" + metadata: + - name: consumerID + value: # Required. Any unique ID. Example: "myConsumerID" + metadata: + - name: durable + value: # Optional. Default: "false" + metadata: + - name: deletedWhenUnused + value: # Optional. Default: "false" + metadata: + - name: autoAck + value: # Optional. Default: "false" + metadata: + - name: deliveryMode + value: # Optional. Default: "0". Values between 0 - 2. + metadata: + - name: requeueInFailure + value: # Optional. Default: "false". +``` + +The above example uses secrets as plain strings. It is recommended to use a secret store for the secrets as described [here](../../concepts/components/secrets.md) + + +## Apply the configuration + +### In Kubernetes + +To apply the RabbitMQ pub/sub to Kubernetes, use the `kubectl` CLI: + +``` +kubectl apply -f rabbitmq.yaml +``` + +### Running locally + +The Dapr CLI will automatically create a directory named `components` in your current working directory with a Redis component. +To use RabbitMQ, replace the redis_messagebus.yaml file with rabbitmq.yaml above.