首页
视频
资源
登录
原
Dapr 官方教程第四章(发布订阅)
6347
人阅读
2021/9/1 12:01
总访问:
2590932
评论:
0
收藏:
0
手机
分类:
云产品
![](https://img.tnblog.net/arcimg/hb/896fd38e95b346f9a0d98c54b135bb94.jpg) >#Dapr 官方教程第四章(发布订阅) [TOC] <br/> >在本快速入门中,您将创建一个发布者微服务和两个订阅者微服务,以演示 Dapr 如何启用发布订阅模式。发布者将生成特定主题的消息,而订阅者将收听特定主题的消息。请参阅Why Pub-Sub以了解此模式何时可能是您的软件架构的不错选择。 本快速入门包括一位出版商: - React 前端消息生成器 >还有两个订阅者: - Node.js 订阅者 - Python订阅者 >Dapr 使用可插入的消息总线来启用发布-订阅,并在符合Cloud Events 的消息信封中将消息传递给订阅者。在这种情况下,您将使用 Redis Streams(在 Redis 版本 => 5 中启用)。以下架构图说明了组件如何在本地互连: ![](https://img.tnblog.net/arcimg/hb/7fca409d98d44a4ca2a7a6787b9d6396.png) 先决条件 ------------ >### 本地运行的先决条件 tn2>1.Dapr CLI 与 Dapr 初始化 2.Node.js 8 或更高版本和/或Python 3.6 或更高版本:您可以使用一个或两个微服务运行此快速入门 >### 在 Kubernetes 中运行的先决条件 tn2>启用 Dapr 的 Kubernetes 集群 在本地运行 ------------ ```bash # 初始化 dapr init ``` tn2>为了在本地运行发布/订阅快速入门,每个微服务都需要与 Dapr 一起运行。首先运行消息订阅者。 tn>注意:这些说明部署了一个 Node 订阅者和一个 Python 订阅者,但如果您没有 Node 或 Python,请随意运行一个。 >### 克隆快速入门存储库 tn2>将此快速入门存储库克隆到您的本地计算机: ```bash git clone https://github.com/dapr/quickstarts.git cd quickstarts/pub-sub/ ``` ![](https://img.tnblog.net/arcimg/hb/3df3b05403c34681b9a453ee292de77a.png) >### 使用 Dapr 运行节点消息订阅者 tn2>在 CLI 中导航到 Node 订阅者目录: ```bash cd node-subscriber ``` tn2>安装依赖: ```bash npm install ``` tn2>使用 Dapr 运行 Node 订阅者应用程序: ```bash dapr run --app-id node-subscriber --app-port 3000 node app.js ``` ![](https://img.tnblog.net/arcimg/hb/287db2bdabce48f980d60ce2a511b6ad.png) tn2>`app-id`它可以是微服务的任何唯一标识符。`app-port`, 是运行 Node 应用程序的端口。最后,`node app.js`传递运行应用程序的命令。 >### 使用 Dapr 运行 Python 消息订阅者 tn>环境最好python3.6+,如果需要升级可以参考这篇:https://www.cnblogs.com/jsdy/p/12694908.html tn2>打开一个新的 CLI 窗口并导航到 CLI 中的 Python 订阅者目录: ```bash cd python-subscriber ``` tn2>安装依赖: ```bash pip3 install -r requirements.txt # 或者 python -m pip install -r requirements.txt ``` tn2>使用 Dapr 运行 Python 订阅者应用程序: ```bash dapr run --app-id python-subscriber --app-port 5000 python3 app.py ``` >### 使用 Dapr 运行 React 前端 tn2>现在,使用 Dapr 运行 React 前端。前端将发布订阅者将接收的不同类型的消息。 打开一个新的 CLI 窗口并导航到 react-form 目录: ```bash cd react-form ``` tn2>使用 Dapr 运行 React 前端应用程序: ```bash npm run buildclient npm install dapr run --app-id react-form --app-port 8080 npm run start ``` ![](https://img.tnblog.net/arcimg/hb/479c8cb4b5f84f5882479884ab340e73.png) tn2>接着我们访问`8080`端口访问前端 ![](https://img.tnblog.net/arcimg/hb/a32c202d5b414a08b023006877d59eb6.png) ![](https://img.tnblog.net/arcimg/hb/237891d51c774c5ea60cc5932a414d66.png) tn2>发布多个主题的`hello`消息,然后在Zipkin查看我这A发到哪儿了 ![](https://img.tnblog.net/arcimg/hb/55551d4686a544b2a5601c86e0bb49ac.png) tn2>这里我们发现它发送的链接地址为`/v1.0/publish/pubsub/{主题名}`; 格式一般是:`http://localhost:<DAPR_URL>/publish/<PUBSUB_NAME>/<TOPIC>` 接着我们查看发布的dapr日志记录。 >这是(React)前端发送的消息 ![](https://img.tnblog.net/arcimg/hb/7486c239ecf9449b956d73e4e3aa209d.png) >这是(node)处理的消息 ![](https://img.tnblog.net/arcimg/hb/8fe830480eaa4faebb983cda519e536f.png) >### 使用 CLI 向订阅者发布消息 tn2>Dapr CLI 提供了一种机制来发布用于测试目的的消息。 ```bash # 使用 Dapr CLI 发布消息: dapr publish --publish-app-id react-form --pubsub pubsub --topic A --data-file message_a.json ``` tn>注意:如果您在无法轻松访问 Web 浏览器的环境中运行,以下 curl 命令将模拟对节点服务器的浏览器请求。 ```bash curl -s http://localhost:8080/publish -H Content-Type:application/json --data @message_b.json curl -s http://localhost:8080/publish -H Content-Type:application/json --data @message_c.json ``` tn2>清理 ```bash dapr stop --app-id node-subscriber dapr stop --app-id python-subscriber dapr stop --app-id react-form ``` 在 Kubernetes 中运行 ------------ ![](https://img.tnblog.net/arcimg/hb/cacd202b9c854f968708ee2f8a47ce86.png) ```bash dapr init -k cd deploy/ ``` tn2>要在 Kubernetes 中运行相同的代码,首先设置一个 Redis 存储,然后部署微服务。您将使用相同的微服务,但最终架构会有所不同: >### 设置Redis存储 ```bash # 通过 docker 创建 redis docker pull redis:latest docker run -itd --name redis-test -p 6379:6379 redis # 查看ip ifconfig vim redis.yaml ``` ![](https://img.tnblog.net/arcimg/hb/f8c6822229e248d08f5b4170515293c4.png) >### 部署项目 ```bash kubectl apply -f . ``` ![](https://img.tnblog.net/arcimg/hb/2425efe85f8c44bc87f48e3cbd5c0673.png) ![](https://img.tnblog.net/arcimg/hb/96ca8f83020344c4980fb6407095c071.png) ![](https://img.tnblog.net/arcimg/hb/0c8a32089b4c40f2acfa02b8a282f660.png)
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
👈{{preArticle.title}}
👉{{nextArticle.title}}
评价
{{titleitem}}
{{titleitem}}
{{item.content}}
{{titleitem}}
{{titleitem}}
{{item.content}}
尘叶心繁
这一世以无限游戏为使命!
博主信息
排名
6
文章
6
粉丝
16
评论
8
文章类别
.net后台框架
168篇
linux
17篇
linux中cve
1篇
windows中cve
0篇
资源分享
10篇
Win32
3篇
前端
28篇
传说中的c
4篇
Xamarin
9篇
docker
15篇
容器编排
101篇
grpc
4篇
Go
15篇
yaml模板
1篇
理论
2篇
更多
Sqlserver
4篇
云产品
39篇
git
3篇
Unity
1篇
考证
2篇
RabbitMq
23篇
Harbor
1篇
Ansible
8篇
Jenkins
17篇
Vue
1篇
Ids4
18篇
istio
1篇
架构
2篇
网络
7篇
windbg
4篇
AI
18篇
threejs
2篇
人物
1篇
嵌入式
2篇
python
13篇
HuggingFace
8篇
pytorch
9篇
opencv
6篇
最新文章
最新评价
{{item.articleTitle}}
{{item.blogName}}
:
{{item.content}}
关于我们
ICP备案 :
渝ICP备18016597号-1
网站信息:
2018-2024
TNBLOG.NET
技术交流:
群号656732739
联系我们:
contact@tnblog.net
欢迎加群
欢迎加群交流技术