Creating a RabbitMQSource¶
This topic describes how to create a RabbitMQSource.
Prerequisites¶
- You have installed Knative Eventing
- You have installed CertManager v1.5.4 - easiest integration with RabbitMQ Messaging Topology Operator
- You have installed RabbitMQ Messaging Topology Operator - our recommendation is latest release with CertManager
- A working RabbitMQ Instance, we recommend to create one Using the RabbitMQ Cluster Operator.
For more information about configuring the
RabbitmqCluster
CRD, see the RabbitMQ website
Install the RabbitMQ controller¶
-
Install the RabbitMQSource controller by running the command:
kubectl apply -f https://github.com/knative-extensions/eventing-rabbitmq/releases/download/knative-v1.16.0/rabbitmq-source.yaml
-
Verify that
rabbitmq-controller-manager
andrabbitmq-webhook
are running:kubectl get deployments.apps -n knative-sources
Example output:
NAME READY UP-TO-DATE AVAILABLE AGE rabbitmq-controller-manager 1/1 1 1 3s rabbitmq-webhook 1/1 1 1 4s
Create a Service¶
-
Create the
event-display
Service as a YAML file:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: event-display namespace: default spec: template: spec: containers: - # This corresponds to # https://github.com/knative/eventing/tree/main/cmd/event_display/main.go image: gcr.io/knative-releases/knative.dev/eventing/cmd/event_display
-
Apply the YAML file by running the command:
Wherekubectl apply -f <filename>.yaml
<filename>
is the name of the file you created in the previous step.Example output:
service.serving.knative.dev/event-display created
-
Ensure that the Service Pod is running, by running the command:
kubectl get pods
The Pod name is prefixed with
event-display
:NAME READY STATUS RESTARTS AGE event-display-00001-deployment-5d5df6c7-gv2j4 2/2 Running 0 72s
Create a RabbitMQSource object¶
-
Create a YAML file using the following template:
Where:apiVersion: sources.knative.dev/v1alpha1 kind: RabbitmqSource metadata: name: <source-name> spec: rabbitmqClusterReference: # Configure name if a RabbitMQ Cluster Operator is being used. name: <cluster-name> # Configure connectionSecret if an external RabbitMQ cluster is being used. connectionSecret: name: rabbitmq-secret-credentials rabbitmqResourcesConfig: parallelism: 10 exchangeName: "eventing-rabbitmq-source" queueName: "eventing-rabbitmq-source" delivery: retry: 5 backoffPolicy: "linear" backoffDelay: "PT1S" sink: ref: apiVersion: serving.knative.dev/v1 kind: Service name: event-display
<source-name>
is the name you want for your RabbitMQSource object.<cluster-name>
is the name of the RabbitMQ cluster you created earlier.
Note
You cannot set
name
andconnectionSecret
at the same time, sincename
is for a RabbitMQ Cluster Operator instance running in the same cluster as the Source, andconnectionSecret
is for an external RabbitMQ server. -
Apply the YAML file by running the command:
Wherekubectl apply -f <filename>
<filename>
is the name of the file you created in the previous step.
Verify¶
Check the event-display Service to see if it is receiving events. It might take a while for the Source to start sending events to the Sink.
kubectl -l='serving.knative.dev/service=event-display' logs -c user-container
☁️ cloudevents.Event
Context Attributes,
specversion: 1.0
type: dev.knative.rabbitmq.event
source: /apis/v1/namespaces/default/rabbitmqsources/<source-name>
subject: f147099d-c64d-41f7-b8eb-a2e53b228349
id: f147099d-c64d-41f7-b8eb-a2e53b228349
time: 2021-12-16T20:11:39.052276498Z
datacontenttype: application/json
Data,
{
...
Random Data
...
}
Cleanup¶
-
Delete the RabbitMQSource:
kubectl delete -f <source-yaml-filename>
-
Delete the RabbitMQ credentials secret:
kubectl delete -f <secret-yaml-filename>
-
Delete the event display Service:
kubectl delete -f <service-yaml-filename>
Additional information¶
- For more samples visit the
eventing-rabbitmq
Github repository samples directory - To report a bug or request a feature, open an issue in the
eventing-rabbitmq
Github repository.