RabbitMQ 客户端(消费者)的活动探针

Alp*_*esh 8 c# rabbitmq kubernetes azure-aks

我想了解/获取有关如何为 RabbitMQ 队列消费者设置活性探针的意见。我不确定如何验证消费者是否仍在处理来自队列的消息。我已经尝试在互联网上寻找一些线索,但找不到任何线索。所以只是在这里问一个问题,看看是否有人有任何想法。

我想确保正常工作的代码块是

                var consumer = new EventingBasicConsumer(channel);
                consumer.Received += (model, ea) =>
                {
                    var body = ea.Body;
                    var message = Encoding.UTF8.GetString(body);
                    Console.WriteLine($"Message Received: {message}");
                };
Run Code Online (Sandbox Code Playgroud)

谢谢。

are*_*ler 3

首先,您需要在应用程序代码中公开一个 HTTP 端点,以检查使用者是否处于活动状态。

有很多方法可以测试消费者的活跃度,例如,您可以检查最后消费的消息的时间戳。如果太旧,您可以通过返回 HTTP 500 错误来声明消费者已死亡,否则返回 HTTP 200。这取决于您的业务逻辑,您可能想使用我建议的方法,或者任何其他适合您需求的方法。

拥有 HTTP 端点后,您可以在 Kubernetes 清单中定义活性探针。

livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
        httpHeaders:
        - name: X-Custom-Header
          value: Awesome
      initialDelaySeconds: 3
      periodSeconds: 3
Run Code Online (Sandbox Code Playgroud)

(摘自https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/