前言

本地Docker部署Pulsar消息代理实现消息发布和消息订阅

介绍

相关概念,后面有时间再花时间整理下。

实践步骤

1.使用dokcer本地部署pulsar

  1. docker run -it \
  2. -p 6650:6650 \
  3. -p 8080:8080 \
  4. --mount source=pulsardata,target=/pulsar/data \
  5. --mount source=pulsarconf,target=/pulsar/conf \
  6. apachepulsar/pulsar:2.7.1 \
  7. bin/pulsar standalone

  

2.docker ps -a 查看pulsar运行是否正常,可以看到下图已经部署成功

pulsar连接地址:http://localhost:8080

         pulsar://localhost:6650

3.使用C#客户端Publish Message到pulsar broker中

(1)为了演示,我这里创建了一个C#控制台项目

(2)我们使用官网推荐的C# pulsar客户端包,添加安装DotPulsar nuget包

(3)创建client

  1. //1。创建pulsar客户端
  2. var client = PulsarClient.Builder()
  3. .ServiceUrl(new Uri("pulsar://localhost:6650"))
  4. .RetryInterval(new TimeSpan(3))
  5. .Build();

(4)创建生产者,发送消息

  1. //2、创建Pulsar Producer(生产者)
  2. var producer = client.NewProducer()
  3. .Topic("persistent://public/default/mytopic")
  4. .Create();
  5. var data = Encoding.UTF8.GetBytes("Hello Pulsar");
  6. await producer.Send(data);

上图可见显示创建producer成功。

(5)下面再创建一个客户端来消费发送者发送的消息(“Hello Pulsar”)。

  1. //2、创建Pulsar Producer(消费者)
  2. var consumer = client.NewConsumer()
  3. .SubscriptionName("MySubscription")
  4. .Topic("persistent://public/default/mytopic")
  5. .Create();

  6. //3.消费消息
  7. await foreach (var message in consumer.Messages())
  8. {
  9. Console.WriteLine("Received: " + Encoding.UTF8.GetString(message.Data.ToArray()));
  10. }

见上图,发布者发送消息成功被订阅者消费。

4.代码示例

  1. //PublisherClient
  2. static async Task Main(string[] args)
  3. {
  4. Console.WriteLine("Hello Pulsar");

  5. //1。创建pulsar客户端
  6. var client = PulsarClient.Builder()
  7. .ServiceUrl(new Uri("pulsar://localhost:6650"))
  8. .RetryInterval(new TimeSpan(3))
  9. .Build();

  10. //2、创建Pulsar Producer(生产者)
  11. var producer = client.NewProducer()
  12. .Topic("persistent://public/default/mytopic")
  13. .Create();

  14. for (int i = 0; i < 5; i++)
  15. {
  16. var data = Encoding.UTF8.GetBytes($"Hello Pulsar {i}");
  17. await producer.Send(data);
  18. Console.WriteLine($"发送消息成功");
  19. }
  20.  
  21. Console.ReadKey();
  22. }
  23.  
  24. //SubscriberClient
  25. static async Task Main(string[] args)
  26. {
  27. //1。创建pulsar客户端
  28. var client = PulsarClient.Builder()
  29. .ServiceUrl(new Uri("pulsar://localhost:6650"))
  30. .RetryInterval(new TimeSpan(3))
  31. .Build();

  32. //2、创建Pulsar Producer(消费者)
  33. var consumer = client.NewConsumer()
  34. .SubscriptionName("MySubscription")
  35. .Topic("persistent://public/default/mytopic")
  36. .Create();

  37. //3.消费消息
  38. await foreach (var message in consumer.Messages())
  39. {
  40. Console.WriteLine("Received: " + Encoding.UTF8.GetString(message.Data.ToArray()));
  41. }


  42. Console.ReadKey();
  43. }

Pulsar部署和实践(一)的更多相关文章

  1. Cobbler自动化部署最佳实践

    第1章 Cobbler自动化部署最佳实践 运维自动化在生产环境中占据着举足轻重的地位,尤其是面对几百台,几千台甚至几万台的服务器时,仅仅是安装操作系统,如果不通过自动化来完成,根本是不可想象的. 面对 ...

  2. tomcat部署最佳实践(一)

    Tomcat部署最佳实践 标签: linux 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 tomcat是玩web软件必会技能之一,今天我给大家介绍一下tomc ...

  3. 【公开课】【阿里在线技术峰会】魏鹏:基于Java容器的多应用部署技术实践

    对于公开课,可能目前用不上这些,但是往往能在以后想解决方案的时候帮助到我.以下是阿里对公开课的整理 摘要: 在首届阿里巴巴在线峰会上,阿里巴巴中间件技术部专家魏鹏为大家带来了题为<基于Java容 ...

  4. Elasticstack 5.1.2 集群日志系统部署及实践

    Elasticstack 5.1.2 集群日志系统部署及实践 一.ELK Stack简介 ELK Stack 是Elasticsearch.Logstash.Kibana三个开源软件的组合,在实时数据 ...

  5. 转: 微博的多机房部署的实践(from infoq)

    转:  http://www.infoq.com/cn/articles/weibo-multi-idc-architecture 在国内网络环境下,单机房的可靠性无法满足大型互联网服务的要求,如机房 ...

  6. ASP.NET Core Docker jexus nginx部署-CentOS实践版

    本文用图文的方式记录了我自己搭建centos+asp.net core + docker + jexus + nginx的整个过程,希望对有同样需求的朋友有一定的参考作用. 本文主要内容如下: cen ...

  7. (转)Cobbler自动化部署最佳实践

    原文:http://www.xuliangwei.com/xubusi/446.html 运维自动化在生产环境中占据着举足轻重的地位,尤其是面对几百台,几千台甚至几万台的服务器时,仅仅是安装操作系统, ...

  8. Kubernetes 服务部署最佳实践(二) ——如何提高服务可用性

    引言 上一篇文章我们围绕如何合理利用资源的主题做了一些最佳实践的分享,这一次我们就如何提高服务可用性的主题来展开探讨. 怎样提高我们部署服务的可用性呢?K8S 设计本身就考虑到了各种故障的可能性,并提 ...

  9. 企业运维 | MySQL关系型数据库在Docker与Kubernetes容器环境中快速搭建部署主从实践

    [点击 关注「 WeiyiGeek」公众号 ] 设为「️ 星标」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 本章目录 目录 ...

随机推荐

  1. Hive相关的命令

    hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行. 其优点是学习成本低,可以通过 ...

  2. 学习Python的书籍——入门到进阶

    入门读物 <Python基础教程>(Beginning Python From Novice to Professional) <Python学习手册>(Learning Py ...

  3. 基金 A 类和 C 类、ETF、LOF、QDII 到底是啥?

    ETF 对于初入股市的新手来说,买了一只公司股票容易,想买一个行业的股票就不是很容易了. 比如你要懂得行业里都有谁,每个公司分配多少钱,最主要股票交易最少要交易 1 手也就是 100 股,要是想配置一 ...

  4. 在ASP.NET Core中用HttpClient(四)——提高性能和优化内存

    到目前为止,我们一直在使用字符串创建请求体,并读取响应的内容.但是我们可以通过使用流提高性能和优化内存.因此,在本文中,我们将学习如何在请求和响应中使用HttpClient流. 什么是流 流是以文件. ...

  5. 使用Azure API Management, Functions, Power Apps和Logic App构建应用

    ASP.NET OpenAPI 可以非常方便的将我们的Web API项目自动文档化,除了自动文档化以外,我们还可以利用Azure API Management将Open API自动文档化了的Web A ...

  6. Hadoop学习笔记—HDFS

    目录 搭建安装 三个核心组件 安装 配置环境变量 配置各上述三组件守护进程的相关属性 启停 监控和性能 Hadoop Rack Awareness yarn的NodeManagers监控 命令 hdf ...

  7. Jenkins-k8s-helm-eureka-harbor-githab-mysql-nfs微服务发布平台实战

    基于 K8S 构建 Jenkins 微服务发布平台 实现汇总: 发布流程设计讲解 准备基础环境 K8s环境(部署Ingress Controller,CoreDNS,Calico/Flannel) 部 ...

  8. 黑马架构师v2.5.1 (codeUtil)使用注意事项

    资源 1.资料里的codeutil软件有问题,使用时部分类和接口文件名后有一串日期数字等.码云的没问题 2.生成代码后zookeeper的IP改为本机的

  9. ClickHouse源码笔记5:聚合函数的源码再梳理

    笔者在源码笔记1之中分析过ClickHouse的聚合函数的实现,但是对于各个接口函数的实际如何共同工作的源码,回头看并没有那么明晰,主要原因是没有结合Aggregator的类来一起分析聚合函数的是如果 ...

  10. 这种ERP系统核查工作实际是在做无用功

    前段时间跟朋友聊起他们公司持续了好几年的ERP核查工作,此时他正在一家分公司做核查.ERP核查工作我是知道的,一个季度一次,每个模块出一个人去子公司巡回巡查,主要核查ERP系统的使用情况. 核查工作主 ...