首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果卡夫卡节点被关闭,请发出警报

如果卡夫卡节点被关闭,请发出警报
EN

Stack Overflow用户
提问于 2018-03-26 17:08:08
回答 1查看 853关注 0票数 1

我已经暴露了一个卡夫卡节点和一个主题-名称。我的web服务器接收了大量的http请求数据,我需要这些数据来处理它们,然后将它们推送给kafka。有时,如果kafka节点被关闭,那么我的服务器仍然会继续抽取数据,这会导致我的内存被炸掉,我的服务器也会崩溃。

如果卡夫卡坏了,我要停止发布数据。我的Java示例代码如下:

代码语言:javascript
复制
  static Producer producer;

  Produce() {
    Properties properties = new Properties();
    properties.put("request.required.acks","1");
    properties.put("bootstrap.servers","localhost:9092,localhost:9093,localhost:9094");
    properties.put("enabled","true");
    properties.put("value.serializer","org.apache.kafka.common.serialization.StringSerializer");
    properties.put("kafka-topic","pixel-server");
    properties.put("batch.size","1000");
    properties.put("producer.type","async");
    properties.put("key.serializer","org.apache.kafka.common.serialization.StringSerializer");
    producer = new KafkaProducer<String, String>(properties);
  }


  public static void main(String[] args) {
    Produce produce = new Produce();

    produce.send(producer, "pixel-server", "Some time");

  }

  //This method is called lot of times
  public void send(Producer<String, String> producer, String topic, String data) {
    ProducerRecord<String, String> producerRecord = new ProducerRecord<>(topic, data);
    Future<RecordMetadata> response = producer.send(producerRecord, (metadata, exception) -> {
      if (null != exception) {
        exception.printStackTrace();
      } else {
        System.out.println("Done");
      }
    });

我刚刚抽象出了一些示例代码。发送方法被多次调用。如果卡夫卡倒下了,我只想防止发送任何信息。解决这种情况的有效方法是什么。

EN

回答 1

Stack Overflow用户

发布于 2018-03-27 08:40:54

如果我是您,我将尝试实现一个断路器。当您在发送记录时遇到一定数量的故障时,电路中断,并提供了一些后备行为。一旦满足了某些条件(例如:过了一段时间),电路就关闭了,您将再次发送记录。此外,vertx.io还附带了自己的解

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49496934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档