我想了解/获取有关如何为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}");
};
谢谢。
答案 0 :(得分:2)
首先,您需要在应用程序代码中公开一个HTTP终结点,以检查使用者是否还活着。
有许多方法可以测试使用者的活动状态,例如,您可以检查上一条被消耗的消息的时间戳。如果太旧了,您可以通过返回HTTP 500错误来声明使用者已死亡,否则,请返回HTTP200。这取决于您的业务逻辑,您可能想使用我提出的建议,或者使用任何其他适合您需要的方法。
一旦有了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/)