RabbitMQ 客户端(消费者)的活性探测
Liveness probe for RabbitMQ Client (Consumer)
我想 know/get 就如何为 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}");
};
谢谢。
首先,您需要在应用程序代码中公开一个 HTTP 端点,以检查消费者是否存活。
有很多方法可以测试消费者的活跃度,比如可以查看最后一条消息被消费的时间戳。如果太旧,您可以通过 returning HTTP 500 错误将消费者声明为已死,否则,return HTTP 200。这取决于您的业务逻辑,您可能想使用我提出的建议,或任何其他适合您需要的方法。
拥有 HTTP 端点后,您可以在 Kubernetes 清单中定义活动探测器。
livenessProbe:
httpGet:
path: /healthz
port: 8080
httpHeaders:
- name: X-Custom-Header
value: Awesome
initialDelaySeconds: 3
periodSeconds: 3
(摘自https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/)
我想 know/get 就如何为 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}");
};
谢谢。
首先,您需要在应用程序代码中公开一个 HTTP 端点,以检查消费者是否存活。
有很多方法可以测试消费者的活跃度,比如可以查看最后一条消息被消费的时间戳。如果太旧,您可以通过 returning HTTP 500 错误将消费者声明为已死,否则,return HTTP 200。这取决于您的业务逻辑,您可能想使用我提出的建议,或任何其他适合您需要的方法。
拥有 HTTP 端点后,您可以在 Kubernetes 清单中定义活动探测器。
livenessProbe:
httpGet:
path: /healthz
port: 8080
httpHeaders:
- name: X-Custom-Header
value: Awesome
initialDelaySeconds: 3
periodSeconds: 3
(摘自https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/)