范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

下一代MQ中间件,不来了解下?

  最近项目中准备使用消息中间件  Apache Pulsar  ,借着机会先做个简单了解吧。 Apache Pulsar
  Apache Pulsar是Apache软件基金会顶级项目,是下一代 云原生分布式消息流 平台。
  Pulsar 作为下一代云原生分布式消息流平台,支持  多租户、持久化存储、多机房跨区域数据复制  ,具有强一致性、高吞吐以及低延时的高可扩展流数据存储特性, 内置诸多其他系统商业版本才有的特性,是云原生时代解决实时消息流数据传输、存储和计算的最佳解决方案。
  Pulsar简介系统架构
  功能特色租户和命名空间(namespace)是 Pulsar 支持多租户的两个核心概念。在租户级别,Pulsar 为特定的租户预留合适的存储空间、应用授权与认证机制。在命名空间级别,Pulsar 有一系列的配置策略(policy),包括存储配额、流控、消息过期策略和命名空间之间的隔离策略。Pulsar 做了队列模型和流模型的统一,在 Topic 级别只需保存一份数据,同一份数据可多次消费。以流式、队列等方式计算不同的订阅模型大大提升了灵活度。Pulsar 使用计算与存储分离的云原生架构,数据从 Broker 搬离,存在共享存储内部。上层是无状态 Broker,复制消息分发和服务;下层是持久化的存储层 Bookie 集群。Pulsar 存储是分片的,这种构架可以避免扩容时受限制,实现数据的独立扩展和快速恢复。Pulsar 原生支持跨地域复制,因此 Pulsar 可以跨不同地理位置的数据中心复制数据。当数据中心中断或网络分区时,在多个数据中心存有消息副本尤为重要,提高可用性。Pulsar Functions 是基于 Pulsar 的轻量级流处理方式。Pulsar Functions 直接部署在 broker 节点上(或作为 Kubernetes 集群中的容器)。通过 Pulsar Functions,Pulsar 可以直接解决许多流处理任务,简化操作。  支持客户端  Java 客户端  C++ 客户端  .Net/C# 客户端  Go 客户端  NodeJS 客户端  Ruby 客户端  Pulsar安装与部署
  目前Pulsar不支持Window,下面通过Docker进行安装,可以参考官网 https://pulsar.apache.org/docs/next/getting-started-docker/
  同时可以安装Pulsar Manager,具体操作可以参考官方文档 https://pulsar.apache.org/docs/next/administration-pulsar-manager/
  其中Pulsar Manager 是一个网页式可视化管理与监测工具,支持多环境下的动态配置。可用于管理和监测租户、命名空间、topic、订阅、broker、集群等。  window环境使用docker推荐使用Docker Desktop,和linux一样可以通过docker命令管理镜像、部署容器等操作。  打开并启动Docker Desktop后,在终端执行命令执行
  _> docker search pulsar
  可以查询到pulsar相关的镜像
  镜像下载  这里我们选择分别下载红框的两个镜像,执行命令
  _> docker pull apachepulsar/pulsar _> docker pull apachepulsar/pulsar-manager   启动  启动Pulsar  docker run -it -p 6650:6650 -p 8080:8080        --mount source=pulsardata,target=/pulsar/data        --mount source=pulsarconf,target=/pulsar/conf        apachepulsar/pulsar bin/pulsar standalone 启动Pulsar Manager  docker run --name pulsar-manager -dit        -p 9527:9527 -p 7750:7750        -e SPRING_CONFIGURATION_FILE=/pulsar-manager/pulsar-manager/application.properties        apachepulsar/pulsar-manager
  添加用户:  for /f "tokens=1" %A in ("curl http://localhost:7750/pulsar-manager/csrf-token") do set CSRF_TOKEN=%A curl -X PUT "X-XSRF-TOKEN: %CSRF_TOKEN%"   -H "Cookie: XSRF-TOKEN=%CSRF_TOKEN%;"    -H "Content-Type: application/json" -d "{"name": "admin", "password": "123456", "description": "super user admin", "email": "admin@test.com"}"    "http://localhost:7750/pulsar-manager/users/superuser"
  访问:  http://localhost:9527/  用户名密码:admin/123456
  配置environments:  这里需要保证Pulsar Manager应用服务能够访问到Pulsar应用,由于都是通过Docker部署,配置Service URL需要使用网络IP,不要用localhost。
  管理界面:
  Pulsar与SpringBoot集成springboot version : 2.3.7.RELEASE  pulsar client: 2.10.2  通过Properties简单定义一些Broker相关的属性  @Data @ConfigurationProperties(prefix = "pulsar") public class PulsarProperties {          private String cluster;          private String namespace;      private String serverUrl;      private String token; } 通过配置定义了一些常用的组件,比如生产、消费工厂  @Configuration @EnableConfigurationProperties({PulsarProperties.class}) public class PulsarBootstrapConfiguration {      private final PulsarProperties properties;      public PulsarBootstrapConfiguration(PulsarProperties properties) {         this.properties = properties;     }      @Bean(destroyMethod = "close")     public PulsarClient pulsarClient() throws PulsarClientException {         ClientBuilder clientBuilder = PulsarClient.builder().serviceUrl(properties.getServerUrl());         return clientBuilder.build();     }      @Bean     public PulsarProducerFactory pulsarProducerFactory() throws PulsarClientException {         return new PulsarProducerFactory(pulsarClient(), properties);     }      @Bean     public PulsarConsumerFactory pulsarConsumerFactory() throws PulsarClientException {         return new PulsarConsumerFactory(pulsarClient(), properties);     }  } 启动服务,在服务启动后,通过实现SmartInitializingSingleton接口,完成容器基本启动(不包含Lazy的Bean)后,开始对消费者Consumer监听  @Slf4j @SpringBootApplication public class PulsarApplication implements SmartInitializingSingleton {      @Autowired     private PulsarConsumerFactory consumerFactory;      public static void main(String[] args) {         SpringApplication.run(PulsarApplication.class,args);     }      @Override     public void afterSingletonsInstantiated() {         startConsumerListener();     }      private void startConsumerListener(){         Consumer consumer = createConsumer();         if( consumer != null ){             while (!Thread.currentThread().isInterrupted()){                 CompletableFuture<? extends Message<?>> completableFuture = consumer.receiveAsync();                 Message<?> message = null;                 try {                     message = completableFuture.get();                 } catch (InterruptedException e) {                     Thread.currentThread().interrupt();                     log.error("错误",e);                 } catch (ExecutionException e) {                     log.error("错误",e);                 }                  if( message!=null ){                     try {                         log.info(" 接收消息:{} ", message.getValue() );                         consumer.acknowledge(message);                     } catch (PulsarClientException e) {                         consumer.negativeAcknowledge(message);                         throw new RuntimeException(e);                     }                 }             }         }     }      private Consumer createConsumer() {         try {             return consumerFactory.getConsumer(Constants.TOPIC_DEMO);         } catch (PulsarClientException e) {             log.error("创建consumer出错:{}", e.getMessage(),e);         }         return null;     } } 消息发送测试  @Slf4j @RunWith(SpringRunner.class) @SpringBootTest public class PulsarBootTests {      @Autowired     private PulsarProducerFactory producerFactory;      @Test     public void sendMessage() throws PulsarClientException {         Producer producer = producerFactory.getProducer(Constants.TOPIC_DEMO);          producer.send(" 测试消息: " + new Date());          producer.close();     }  } 检查消息接收情况  2023-02-05 12:05:14.043  INFO 23472 --- [ulsar-timer-6-1] o.a.p.c.impl.ConsumerStatsRecorderImpl   : [TOPIC_DEMO] [sub-TOPIC_DEMO] [7c2b2] Prefetched messages: 0 --- Consume throughput received: 0.02 msgs/s --- 0.00 Mbit/s --- Ack sent rate: 0.02 ack/s --- Failed messages: 0 --- batch messages: 0 ---Failed acks: 0 2023-02-05 12:06:16.425  INFO 23472 --- [           main] com.sucl.pulsar.PulsarApplication        :  接收消息: 测试消息: Sun Feb 05 12:06:16 CST 2023 结束语
  该篇主要通过官网对Apache Pulsar做了简单的了解与尝试,同时基于SpringBoot,以简单的示例代码实现了消息的发送与接收,其中各个组件仅仅使用了默认的配置,在生产环境需要根据Pulsar的特性以及官方API使其具有扩展性与易用性。

黄帝内经自读有感第一天黄帝内经,是我国中医集大成之作,也是现存最早的中医经典。中国古代人常常把必须要学习很有价值的重要的书籍称为经,比如道家的道德经之类,因此可以看出这本中医经典的重要性。笔者最近正在研植物药中的花类药材是牛皮癣患者的宝中医在我国已有几千年的历史,目前仍然是治疗疾病的常用手段之一,包括中药针灸拔火罐等治疗方法,临床上以中药运用得较多。中药,主要来源于天然药及其加工品,包括植物药动物药矿物药以及部分肾结石患者不要慌,牢记这2个排石方法,让结石自己排出来肾结石如果突然发作,那种上不上下不下,痛得让人连腰都直不起来感觉,相信没有人愿意再去体会一次,但是如果在饮食上不注意的话,一段时间以后,结石又会反复发作,那么在日常饮食生活中注意些有种整容叫李湘离婚,前夫王岳伦变换不大,她却像换个人文贵圈毒姐2010年10月13日,李湘晒出了自己为女儿王诗龄庆祝12岁生日的照片,照片中的王诗龄抿着嘴甜甜地笑着,明显能够看出她的开心。李湘祝女儿生日快乐,永远平安,喜乐,健康,身王牌虞书欣为何要抢着淋水?原来她的套路太深了难产的第七季王牌对王牌第五期终于在上周播出了,相比往期节目当天公布主题和飞行嘉宾的惯例,这一次因为三次延播,早就公布了这些内容,缺少了营销的热点。在本期的飞行嘉宾中,除了首次参加节向往6蘑菇屋家人来到海边,黄磊瘦了好多,张艺兴有综艺感向往的生活是一档慢综艺节目,嘉宾们守拙归田园,自力更生的生活场景,都让观众们感受到综艺节目中难得的宁静。如今,这一档国民综艺节目已经走到了第六季。节目组官宣了,嘉宾们也是尘埃落定。有种女演员的美造型越土,角色越狼狈,人物就越惊艳这几年里各种类型的女演员层出不穷,但随着剧集的增多,观众也发现了有种美并不只局限于演员外形表面,而是一种更深层次的美感。其中突出的要数闫妮在装台里,身为底层人民穿着几十块钱的短袖或国乒3大奥运冠军拍广告!马龙站C位超帅气,刘诗雯伤疤令人心疼在近期的国际乒乓球赛事结束后,国乒队的球员们回到了国内,开始了下一阶段的训练计划。在最近的训练过程中,国乒三大冠军一同合拍了以金子总会发光为主题的广告。三人身着队服,整齐亮相于视频安震江扮演反派王德彪,被沿街围堵叫骂,49岁猝死拍摄途中安震江有人说导演挑选演员时心里都有一杆明确的秤,被选中演坏蛋的现实中也好不到哪里去,相由心生。果真如此吗?其实根本没有确切依据,但有些观众愣是戏里戏外分不清,把对角色的愤怒迁怒到扮赵丽颖带儿子逛商场,母子互动超有爱,晚上一起回冯绍峰家说起赵丽颖和冯绍峰这一对,很多人都觉得有点可惜,毕竟两人在一起时那么甜蜜,2018年10月,两人官宣结婚,2019年3月,就迎来了他们的爱情结晶。原本以为,一家三口会幸福地生活下去二胎三胎家庭出游,何不试试耀出行的包车服务随着政策的开放以及很多家庭都有着不错的经济基础,在这种情况下,二胎家庭和三胎家庭明显增多。这样的家庭,在家用车的选择上面,考虑到未来的全家出行或许会购买一辆MPV车型。当然了,也有
梦华录顾千帆受伤方式太特别,盼儿的反应让人心痛梦华录顾千帆受伤方式太特别,盼儿的反应让人心痛本文由娱乐乐可不可原创,如果你们喜欢的话,欢迎点赞和关注哦!电视剧梦华录正在火热播出中,是由刘亦菲和陈晓领衔主演的电视剧,讲述赵盼儿和乡情散文又见白鹭伴着铁牛舞乡情散文又见白鹭伴着铁牛舞文吴建昌今年的6月9日下午,因有事要回窑廊一趟。所办事情倒不急,再加上县城到窑廊路并不十分远,县城最北端的小区与窑廊最南端的小区相隔也不过三四里路吧,所以君山游洛阳老君山君山游老君之山,道教圣地,藏八百里伏牛之怀,隐千山万岭之中。挨嵩岳,望华山,势宏宏卧横苍苍,向函谷之关,包伊河洛水,壮巍巍伫直云天。峰峦叠叠,木叶翠翠,溪流潺潺,白云缭绕,曲径幽幽李光泽枣林坪一hr晋陕大峡谷西岸,有一个古老的小镇,面临黄河,背靠大山。此山既非土山,也非石山,胶泥夹石炮,石山土戴帽是其典型特征。这样的地理条件,自然长不出好庄稼,但对于枣树来说,却是一方风一整片超疗愈稻草view住宿一整片超疗愈稻草view住宿2天1夜包住宿打卡天空之境夜游探索萤火虫观赏壮观的老鹰之旅寻找蓝眼泪海滩等!一人只需RM2xx原来Sekinchan除了稻田还有好多好玩的特色景点啊!2世界最棒的旅游体验前十强!最棒不一定很贵你理想中的旅行是什么样子的?哪一种旅行体验会让你印象深刻?近日,全球知名旅游平台猫途鹰根据去年游客的意见对各国不同的旅游体验进行了评级,并公布了2022年全球前十旅行体验榜单。阿姆暑假学生出游迎利好!多地要求不得限制和阻碍学生流动暑期和毕业季即将到来,文旅部也在逐步调整跨省游熔断范围,目前全国20多个省区已逐步恢复跨省游,多地逐渐放宽跨省旅游的出行限制,旅游行业自6月以来,利好消息不断。针对即将到来的暑期和高血压头晕头疼,天麻钩藤颗粒没用?教你这么搭配才好用高血压吃安宫降压丸没用?今天医生教你这么搭配才好用。有的朋友在后台私信我说,他高压220,低压150,平常一天一片降压药,高压能控制在140,配合使用的还有一个天麻钩藤颗粒,血压勉第一章第2讲获取财富的道路就这4条,你在哪一条?洞悉财富本质,成就自由人生。大家好,我是乾行者,欢迎回到财务自由的课程。上一讲中我们介绍了财务自由的重点是自由二字,让我们拥有自主选择生活方式的权利,以及实现财务自由必须要记住的第退休大妈,50多岁开始创业年赚百亿?现在人对于赚钱是非常向往的,都在通过各种方式来达到赚钱的目的,其中创业成为了多数人的选择。曾有调查显示,不少打工者将财富自由的目光投向了创业上面,觉得创业成功后就能赚钱不少钱。创业终于来了!下半年旗舰新机大爆发,盘点最值得期待的三款旗舰手机度过了旗舰新机节奏相对较慢的2022年上半年,相信大家都有些无聊。但经过暴风雨前的平静后,各家手机企业巨头的旗舰手机也将在下半年迎来大爆发,下面就带大家聊聊这其中最值得期待的三款手