[go: up one dir, main page]

Skip to content

Creating a RabbitMQSource

stage version

This topic describes how to create a RabbitMQSource.

Prerequisites

  1. You have installed Knative Eventing
  2. You have installed CertManager v1.5.4 - easiest integration with RabbitMQ Messaging Topology Operator
  3. You have installed RabbitMQ Messaging Topology Operator - our recommendation is latest release with CertManager
  4. 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

  1. 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
    
  2. Verify that rabbitmq-controller-manager and rabbitmq-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

  1. 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
    
  2. Apply the YAML file by running the command:

    kubectl apply -f <filename>.yaml
    
    Where <filename> is the name of the file you created in the previous step.

    Example output:

    service.serving.knative.dev/event-display created
    

  3. 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

  1. Create a YAML file using the following template:

    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
    
    Where:

    • <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 and connectionSecret at the same time, since name is for a RabbitMQ Cluster Operator instance running in the same cluster as the Source, and connectionSecret is for an external RabbitMQ server.

  2. Apply the YAML file by running the command:

    kubectl apply -f <filename>
    
    Where <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

  1. Delete the RabbitMQSource:

    kubectl delete -f <source-yaml-filename>
    
  2. Delete the RabbitMQ credentials secret:

    kubectl delete -f <secret-yaml-filename>
    
  3. Delete the event display Service:

    kubectl delete -f <service-yaml-filename>
    

Additional information

We use analytics and cookies to understand site traffic. Information about your use of our site is shared with Google for that purpose. Learn more.

× OK