前言

本地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. VS2013环境下配置OSG(3.4.0版本)

    参考链接1: http://blog.csdn.net/lonsegdi/article/details/50579439 参考链接2: http://bbs.osgchina.org/forum.p ...

  2. 【图像处理】OpenCV+Python图像处理入门教程(四)几何变换

    这篇随笔介绍使用OpenCV进行图像处理的第四章 几何变换. 4  几何变换 图像的几何变换是指将一幅图像映射到另一幅图像内.有缩放.翻转.仿射变换.透视.重映射等操作. 4.1  缩放 使用cv2. ...

  3. Android 在活动中使用 Menu

    •前行必备--创建 menu 首先,新建一个项目,选择 Empty Activity 选项,并命名为 Test Menu: 这样 Android Studio 自动为我们新建 MainActivity ...

  4. 手写无缝轮播banner

    <div class="banner"> <ul class="clearfloat bannerul xin" id="xin&q ...

  5. 整合一套高性能网关Kong

    前言 相信大家对Api网关都比较的熟悉,我们之前的文章也介绍过ASP.NET Core的网关Ocelot,也介绍过Spring Cloud Gateway.说到网关的主要功能,其实总结起来就两个字&q ...

  6. java面试-集合类不安全问题及解决方案

    一.List 1.代码演示 public class ArrayListNotSafeDemo { public static void main(String[] args) { List<S ...

  7. 自学转行JAVA,没有项目经历怎么找工作?

    应届生或者是刚参加工作的转行人员都有这样一个疑惑,刚学出来没有工作经验,但是企业又要求你必须要有工作经验,但是刚毕业找不到工作就不可能有工作经验,感觉陷入一个死循环.其实这种情况那些企业是不可能不知道 ...

  8. 自动化kolla-ansible部署ubuntu20.04+openstack-victoria之实例类型-10

    自动化kolla-ansible部署ubuntu20.04+openstack-victoria之实例类型-10 欢迎加QQ群:1026880196 进行交流学习 实例类型 #controller1 ...

  9. SpringBoot+Gradle构建多模块项目

    1 概述 Gradle由于构建速度比Maven快,且比Maven灵活,因此很多后端的应用都使用了Gradle进行构建,但一个问题是,Gradle的多模块项目比较难构建,再加上Gradle的更新非常快, ...

  10. 07_利用pytorch的nn工具箱实现LeNet网络

    07_利用pytorch的nn工具箱实现LeNet网络 目录 一.引言 二.定义网络 三.损失函数 四.优化器 五.数据加载和预处理 六.Hub模块简介 七.总结 pytorch完整教程目录:http ...