Kafka和兔子的区别

slmsl1lt  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(298)

据我所知,rabbitmq生产者在向提供交付保证的代理发送消息时需要确认。Kafka制作人不需要经纪人的确认。这是不是意味着Kafka没有交货保证?如果没有,Kafka如何在没有确认的情况下提供交货保证?
我的理解正确吗?请纠正我的任何误解,因为我仍然在学习这些系统。

q7solyqu

q7solyqu1#

在0.9.0.0及更高版本中,producer#send有一个返回值,您可以在代理分区中获得消息的偏移量。同时,您可以实现回调,如果没有异常,则表示消息已发送到正确的代理。

bqjvbblv

bqjvbblv2#

Kafka对此其实很灵活。
生产者的确认数量是可配置的。该配置称为 RequiredAcks . 实际上,required acks设置为 ProduceRequest 级别,但我从未见过单个producer示例允许生成具有不同必需acks设置的消息的实现。 RequiredAcks 是一个整数值,表示“代理在响应product请求之前应该等待多少个确认”。
RequiredAcks 设置为 0 (不建议用于生产)表示“触发并忘记”,例如,代理将立即响应,而无需等待数据写入日志。在这种情况下,您可能会在不知情的情况下丢失消息。
RequiredAcks 设置为 1 表示“等待数据写入本地日志”,其中本地日志是接收请求的代理的日志。一旦您的数据被写入本地日志,代理就会做出响应。
RequiredAcks 设置为 -1 表示“等待数据写入本地日志并由所有ISR复制”。
每个 ProduceRequest 也有一个 Timeout 字段,表示“等待必要数量的确认的最长时间”。
所以Kafka支持确认请求,但允许关闭确认。

相关问题