春の雲探偵ジプキンkafka回収集


春の雲探偵ジプキンkafka回収集

 

アプリケーション:サーバーはログをメッセージミドルウェアに送信し、zipkinはメッセージミドルウェアからログデータを取得して、ログデータの非同期取得を実現します。

 

********************************

ジプキンの作成

 

#zookeeper
docker run -it -d --net fixed3 --ip 192.168.57.2 --name zoo zookeeper


#kafka
docker run -it -d --net fixed3 --ip 192.168.57.3 \
-v /usr/kafka/single/conf/server.properties:/usr/kafka/config/server.properties \
--name kafka kafka bash bin/kafka-server-start.sh config/server.properties


#zipkin
docker run -it -d --net fixed3 --ip 192.168.57.4 -e "QUERY_PORT=8080" \
-e "COLLECTOR_KAFKA_ENABLED=true" -e "KAFKA_BOOTSTRAP_SERVERS=192.168.57.3:9092" \
--name zipkin openzipkin/zipkin

 

 

********************************

jarパッケージをインポート

 

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-stream-kafka</artifactId>
        </dependency>

 

 

********************************

サービス1:hello-service

 

*******************

設定ファイル

 

spring:
  application:
    name: hello-service
  cloud:
    consul:
      host: 192.168.57.21
      port: 8500
  zipkin:
    sender:
      type: kafka
  kafka:
    bootstrap-servers: 192.168.57.3:9092

 

ZipkinSenderProperties.SenderType:コレクションタイプ

@ConfigurationProperties("spring.zipkin.sender")
public class ZipkinSenderProperties {
    private ZipkinSenderProperties.SenderType type;

    public ZipkinSenderProperties() {
    }

    public ZipkinSenderProperties.SenderType getType() {
        return this.type;
    }

    public void setType(ZipkinSenderProperties.SenderType type) {
        this.type = type;
    }

    public static enum SenderType {
        ACTIVEMQ,   //使用消息中间件activemq收集
        RABBIT,     //使用消息中间件rabbitmq收集
        KAFKA,      //使用消息中间件kafka收集
        WEB;        //使用http收集

        private SenderType() {
        }
    }
}

 

*******************

コントローラー層

 

HelloController

@RestController
public class HelloController {

    private Logger logger= LoggerFactory.getLogger(HelloController.class);

    @RequestMapping("/hello")
    public String hello(){
        logger.info("hello controller: {}","hello world");

        return "hello world";
    }
}

 

 

********************************

サービス2:hello-consumer

 

*******************

設定ファイル

 

spring:
  application:
    name: hello-conusmer
  cloud:
    consul:
      host: 192.168.57.21
      port: 8500
  zipkin:
    sender:
      type: kafka
  kafka:
    bootstrap-servers: 192.168.57.3:9092

 

*******************

サービス層

 

HelloService

@FeignClient(name = "hello-service",fallback = HelloServiceImpl.class)
public interface HelloService {

    @RequestMapping("/hello")
    String hello();
}

 

*******************

serviceImplレイヤー

 

HelloServiceImpl

@Service
public class HelloServiceImpl implements HelloService {

    @Override
    public String hello() {
        return "本地调用输出: "+"hello world";
    }
}

 

*******************

コントローラー層

 

HelloConsumerController

@RestController
public class HelloConsumerController {

    private Logger logger= LoggerFactory.getLogger(HelloConsumerController.class);

    @Resource
    private HelloService helloService;

    @RequestMapping("/consume")
    public String consume(){
        logger.info("远程调用hello-service:{}",helloService.hello());
        logger.info("本地调用hello-consumer:{}","hello consumer");

        return "hello consumer";
    }
}

 

 

**************************

テストを使用

 

呼び出しインターフェース/消費

      

      

 

複数の呼び出し/消費

      

 

 

387の元の記事を公開 98のような 30,000以上の訪問

おすすめ

転載: blog.csdn.net/weixin_43931625/article/details/104856910