当前位置: 首页 > news >正文

单页面网站有哪些内容网站制作项目

单页面网站有哪些内容,网站制作项目,建行官网官网网站吗,沟通交流类网站有哪些背景 Skywalking默认场景下,Tracing对于消息队列的发送场景,无法将TraceId传递到下游消费者,但对于微服务场景下,是有大量消息队列的业务场景的,这显然无法满足业务预期。 解决方案 Skywalking的官方社区中&#xf…

背景

Skywalking默认场景下,Tracing对于消息队列的发送场景,无法将TraceId传递到下游消费者,但对于微服务场景下,是有大量消息队列的业务场景的,这显然无法满足业务预期。

解决方案

Skywalking的官方社区中,有用户提出了该场景问题,Skywalking在补充工具包中,提供了对Kafka的tracing支持。

skywalking kafka problem

代码实现:

<dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-kafka</artifactId><version>${skywalking.version}</version></dependency>

对于该工具包,默认情况下,是针对KafkaTemplate进行trace,即如果使用KafkaTemplate发送消息,代码层面无需做任何改动。

如果没有使用KafkaTemplate的场景,toolkit也提供的了注解的支持:

public class ConsumerThread2 extends Thread {@Overridepublic void run() {Properties consumerProperties = new Properties();//...consumerProperties.put()KafkaConsumer<String, String> consumer = new KafkaConsumer<>(consumerProperties);consumer.subscribe(topicPattern, new NoOpConsumerRebalanceListener());while (true) {if (pollAndInvoke(consumer)) break;}consumer.close();}@KafkaPollAndInvokeprivate boolean pollAndInvoke(KafkaConsumer<String, String> consumer) {try {Thread.sleep(1000);} catch (InterruptedException e) {}ConsumerRecords<String, String> records = consumer.poll(100);if (!records.isEmpty()) {OkHttpClient client = new OkHttpClient.Builder().build();Request request = new Request.Builder().url("http://localhost:8080/kafka-scenario/case/kafka-thread2-ping").build();Response response = null;try {response = client.newCall(request).execute();} catch (IOException e) {}response.body().close();return true;}return false;}
}

异步线程Tracing

对于Kafka消息的发送,经常会配合异步线程池的场景使用,Tracing的基本原理是基于ThreadLocal进行实现的,那么对于异步场景,是会丢失TraceId,通常的解决方式,是需要手动将主线程的TraceId手动赋值给子线程,但这种方式需要手动代码侵入,并不友好。

幸运的是,Skywalking的toolkit中提供了对于异步线程tracing的支持。

<dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-trace</artifactId><version>${skywalking.version}</version>
</dependency>

推荐用法:

ExecutorService executorService = Executors.newFixedThreadPool(1);
executorService.execute(RunnableWrapper.of(new Runnable() {@Override public void run() {//your code}
}));

或者:

 @TraceCrossThreadpublic static class MyCallable<String> implements Callable<String> {@Overridepublic String call() throws Exception {return null;}}
...ExecutorService executorService = Executors.newFixedThreadPool(1);executorService.submit(new MyCallable());

PS:事实上,RunnableWrapper也是基于@TraceCrossThread实现。

相关文档:
https://skywalking.apache.org/docs/skywalking-java/v8.16.0/en/setup/service-agent/java-agent/application-toolkit-kafka/

https://skyapm.github.io/document-cn-translation-of-skywalking/zh/6.1.0/setup/service-agent/java-agent/Application-toolkit-trace-cross-thread.html

https://blog.51cto.com/knifeedge/5268667

https://blog.csdn.net/lijunwyf/article/details/107954543

http://www.yayakq.cn/news/399285/

相关文章:

  • 大连意动网站建设有限公司怎么样网站建设企业官网体验版是什么
  • 武穴建设网站异构国际设计
  • 什么网站做教育的比较多沙坪坝最新消息今天
  • 免费域名注册平台网站优化怎么看
  • 小语种服务网站移动端减肥网站模板
  • 网站建设推销话术案例东莞网站制作实力乐云seo
  • 高台县建设局网站网络营销的特点包括
  • 个人网站建设研究意义wordpress多语言界面
  • 夫妻找做伙食饭工作哪个网站好wordpress多重筛选页面
  • 酒店管理公司网站建设方案宽屏营销型网站源码
  • wordpress教程 网站标题微网站开发工具有哪些
  • 如何使用电子商务网站新华路街道网站建设
  • 瑞安市公用建设局网站怎样做网站关键词优化
  • 工程认证网站的建设青山做网站
  • 建站之星官网两人世界高清完整版免费观看
  • 网站外链数怎么查公司如何建设网站
  • 帝国做视频网站阿里云1m 宽带做网站服务器
  • 建设网站的需求分析怎样看一个网站是哪个公司做的
  • 如何使用模板建设网站注册公司费用流程图
  • 湛江网站建设产品优化宜昌做网站优化
  • 龙岗网络推广深圳网站建设数据库网站建设公司
  • 怎样做理财投资网站营销型网站框架
  • 以前在线做预算的网站广告设计网站免费
  • 哔哩哔哩网页版官网在线观看淄博seo服务
  • 网站建设价格济南网站建设a2345
  • 网站实名认证查询申请表做境外域名网站
  • 有没有代做ppt的网站织梦网站主页底
  • 网站开发课设wordpress数据库里的主题痕迹
  • 深圳比较好的网站建设公司wordpress 重新生成
  • 本公司经营网站建设硬件开发流程图