前言

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

介绍

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

实践步骤

1.使用dokcer本地部署pulsar

docker run -it \
-p 6650:6650 \
-p 8080:8080 \
--mount source=pulsardata,target=/pulsar/data \
--mount source=pulsarconf,target=/pulsar/conf \
apachepulsar/pulsar:2.7.1 \
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。创建pulsar客户端
var client = PulsarClient.Builder()
.ServiceUrl(new Uri("pulsar://localhost:6650"))
.RetryInterval(new TimeSpan(3))
.Build();

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

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

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

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

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

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

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

4.代码示例

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

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

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

for (int i = 0; i < 5; i++)
{
var data = Encoding.UTF8.GetBytes($"Hello Pulsar {i}");
await producer.Send(data);
Console.WriteLine($"发送消息成功");
} Console.ReadKey();
} //SubscriberClient
static async Task Main(string[] args)
{
//1。创建pulsar客户端
var client = PulsarClient.Builder()
.ServiceUrl(new Uri("pulsar://localhost:6650"))
.RetryInterval(new TimeSpan(3))
.Build();

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

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


Console.ReadKey();
}

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. Vue.js 学习笔记之七:使用现有组件

    5.3 使用现有组件 在之前的五个实验中,我们所演示的基本都是如何构建自定义组件的方法,但在具体开发实践中,并非项目中所有的组件都是需要程序员们自己动手来创建的.毕竟在程序设计领域,"不要重 ...

  2. python-3-2

    一 切片 1.切片是list取值的一种方式 列子: nums = ['a','b','c','d','e','f','h','g','k','l','kk','nn','ee'] 取b和c元素出来 p ...

  3. PTA 线性表元素的区间删除

    6-8 线性表元素的区间删除 (20 分)   给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素.删除后表中剩余元素保持顺序存储,并且相对位置不能改变. 函数接口定义: ...

  4. Azure Front Door(三)启用 Web Application Firewall (WAF) 保护Web 应用程序,拒绝恶意攻击

    一,引言 上一篇我们利用 Azure Front Door 为后端 VM 部署提供流量的负载均衡.因为是演示实例,也没有实际的后端实例代码,只有一个 "Index.html" 的静 ...

  5. RepVGG

    RepVGG: Making VGG-style ConvNets Great Again 作者:elfin   资料来源:RepVGG论文解析 目录 1.摘要 2.背景介绍 3.相关工作 3.1 单 ...

  6. 面试题:ApplicationContext和BeanFactory两种容器区别

    ApplicationContext和BeanFactory两种容器区别 BeanFactory是ApplicationContext容器的父接口 BeanFactory(多例模式): BeanFac ...

  7. 【LiteOS】LiteOS消息队列-实战

    目录 前言 链接 参考 笔录草稿 创建测试任务 部分源码 前言 链接 LiteOS源码链接 常见问题 华为开发者社区 华为LiteOS官方教程 我的gitee-LiteOS-mcu 参考 上面链接 笔 ...

  8. 巧用 SVG 滤镜还能制作表情包?

    本文将介绍一些使用 SVG feTurbulence 滤镜实现的一些有趣.大胆的的动效. 系列另外两篇: 有意思!强大的 SVG 滤镜 有意思!不规则边框的生成方案 背景 今天在群里面聊天,看到有人发 ...

  9. 七大php主流框架,你用过几个?

    在php中,我们最常用的框架有七个,分别是Yii2.Laravel.Yaf.Thinkphp.Code Igniter.Zend Framework以及CakePHP,今天我们就来详细介绍一下他们.一 ...

  10. java面试-垃圾回收器谈谈你的理解

    一.垃圾回收算法: 引用计数 复制算法 标记-清除 标记-整理 二.垃圾回收的方式: 串行(Serial).并行(Parallel).并发(CMS).G1 1.串行垃圾回收器(Serial) 它为单线 ...