创建 RabbitMQSource¶
此主题介绍如何创建 RabbitMQSource。
先决条件¶
- 您已安装 Knative Eventing
- 您已安装 CertManager v1.5.4 - 最容易与 RabbitMQ Messaging Topology Operator 集成
- 您已安装 RabbitMQ Messaging Topology Operator - 我们推荐使用 最新版本,并结合 CertManager 使用
- 一个可用的 RabbitMQ 实例,我们建议使用 RabbitMQ Cluster Operator 来创建一个。有关配置
RabbitmqClusterCRD 的更多信息,请参阅 RabbitMQ 网站
安装 RabbitMQ 控制器¶
-
通过运行以下命令安装 RabbitMQSource 控制器
kubectl apply -f https://github.com/knative-extensions/eventing-rabbitmq/releases/download/knative-v1.21.0/rabbitmq-source.yaml -
验证
rabbitmq-controller-manager和rabbitmq-webhook是否正在运行kubectl get deployments.apps -n knative-sources示例输出
NAME READY UP-TO-DATE AVAILABLE AGE rabbitmq-controller-manager 1/1 1 1 3s rabbitmq-webhook 1/1 1 1 4s
创建服务¶
-
将
event-display服务创建为 YAML 文件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 -
通过运行命令应用 YAML 文件
其中kubectl apply -f <filename>.yaml<filename>是您在上一步中创建的文件的名称。示例输出
service.serving.knative.dev/event-display created -
通过运行以下命令,确保服务 Pod 正在运行
kubectl get podsPod 名称以
event-display为前缀NAME READY STATUS RESTARTS AGE event-display-00001-deployment-5d5df6c7-gv2j4 2/2 Running 0 72s
创建 RabbitMQSource 对象¶
-
使用以下模板创建 YAML 文件
其中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>是您希望为 RabbitMQSource 对象指定的名称。<cluster-name>是您先前创建的 RabbitMQ 集群的名称。
注意
您不能同时设置
name和connectionSecret,因为name用于与 Source 运行在同一集群中的 RabbitMQ Cluster Operator 实例,而connectionSecret用于外部 RabbitMQ 服务器。 -
通过运行命令应用 YAML 文件
其中kubectl apply -f <filename><filename>是您在上一步中创建的文件的名称。
验证¶
检查 event-display 服务以查看它是否正在接收事件。Source 可能需要一些时间才能开始向 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
...
}
清理¶
-
删除 RabbitMQSource
kubectl delete -f <source-yaml-filename> -
删除 RabbitMQ 凭证 Secret
kubectl delete -f <secret-yaml-filename> -
删除 event display 服务
kubectl delete -f <service-yaml-filename>
附加信息¶
- 有关更多示例,请访问
eventing-rabbitmqGithub 仓库 samples 目录 - 要报告错误或请求功能,请在
eventing-rabbitmqGithub 仓库 中提出问题。