基于事件驱动架构构建微服务第15部分:SPA前端

原文链接 https://logcorner.com/building-micro-services-through-event-driven-architecture-part15-spa-front-end/

在本教程中,我将展示如何使用angular构建SPA前端来发送命令和请求查询。

SPA前端使用commandAPI发送命令(创建、更新或删除语音),然后该命令将传输到Kafka服务总线,然后才可用于no-sql数据库 elasticsearch。

Query API将使用no-sql数据库elasticsearch来显示新创建的数据(在即将发布的教程中,我将使用Signalr Notification通知SPA前端更新屏幕)

要学习本教程,您应该熟悉angular。

环境变量

angular项目包含一个名为environments的文件夹。在这个文件夹中,我可以定义环境变量,例如:environment.test.ts来定义测试环境设置。

以下命令将使用测试环境运行构建

ng run build –configuration=test

在我的演示中,我将进入默认环境,即 dev (environment.ts)

npm run build 会默认使用这个环境。

ad265512b74b02fe392ac0903656debe.png

这里我定义了命令Api端点和查询Api端点

语音服务

SpeechService使用来自@angular/common/http的HttpClient服务来发送POST、GET、PUT或DELETE请求

0307efaf9e0666384b31dac99e274dd7.png

SpeechListComponent

SpeechListComponent调用SpeechService从查询Api中检索数据

bf204d24153080d5ba72bb5f8b4857ea.png

SpeechCreateComponent

SpeechCreateComponent调用SpeechService向命令Api发送(POST)数据

7ade79c0cb59a6b751ad49dae56c31f2.png

测试

使用本地环境进行测试

搭建测试环境需要安装kafka,elastic search https://logcorner.com/building-microservices-through-event-driven-architecture-part12-produce-events-to-apache-kafka/

启动zookeeper

zookeeper-server-start.bat config\zookeeper.properties

启动kafka

kafka-server-start.bat config\server.properties

kafka-topics –zookeeper 127.0.0.1:2181 –topic Speech –create –partitions 3 –replication-factor 1

启动ElasticSearch 和 Kibana

bin/kibana

http://localhost:5601

启动服务总线

从此repo克隆代码:https://github.com/logcorner/LogCorner.EduSync.Speech.ServiceBus/tree/develop

92ad221f4a4be23585e8fadc4c87807b.png

启动命令API

从此repo克隆代码:https://github.com/logcorner/LogCorner.EduSync.Speech.Command/tree/develop

9adb2d72abc280dca9668fadc99482bf.png

启动查询API

从此repo克隆代码:https://github.com/logcorner/LogCorner.EduSync.Speech.Query/tree/develop

53b50cfb5059083e13c0ab43dd4009f6.png

启动前端

从此repo克隆代码:https://github.com/logcorner/LogCorner.EduSync.Speech.Front/tree/develop

86620173168e1be6647efca7d7fb5582.png

28ec34919143bf57eb0a15a6d6ca2f4f.png

使用docker测试

创建一个docker网络

docker network create speech_network

为基础设施(kafka、elasticsearch、生产者和消费者)构建和运行多容器docker应用程序 ……\LogCorner.EduSync.Speech.ServiceBus\src

docker-compose build
docker-compose up

为命令Api(sql server linux 和命令 Api)构建和运行多容器docker应用程序 …\LogCorner.EduSync.Speech.Command\src

docker-compose build
docker-compose up

为查询Api构建和运行多容器docker应用程序 ….\LogCorner.EduSync.Speech.Query\src

docker-compose build
docker-compose up

为前端SPA(nginx 和 angular 前端)构建并运行容器docker应用程序 …….\LogCorner.EduSync.Speech.Front\logcorner-edusync-speech

docker-compose build
docker-compose up
docker ps –all –format “table {{.ID}}\t{{.Image}}\t{{.Names}}\t{{.Ports}}”

1b10a1ce75aec6426e0fe8ab09972da9.png

http://localhost:4200/speech

0d23e09adbd5d5498701cb55c9099908.png

代码源可在此处获得:

  • https://github.com/logcorner/LogCorner.EduSync.Speech.Front/tree/develop

  • https://github.com/logcorner/LogCorner.EduSync.Speech.Query/tree/develop

  • https://github.com/logcorner/LogCorner.EduSync.Speech.Command/tree/develop

  • https://github.com/logcorner/LogCorner.EduSync.Speech.ServiceBus/tree/develop

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/294287.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BBC又一神作,豆瓣9.8分,美轮美奂的大自然不仅仅属于人类

总有那么一些人,满怀着对世界的好奇,不远万里不畏艰难去穿越世界上每一个角落,为我们呈现出仅凭我们自己绝无可能看到的世间真实与美好。今天给大家推荐一部BBC出品的一部纪录片,纪录片爱好者肯定听过:BBC出品&#xf…

想追身边的女孩?哥们我只能帮到你这份上了

1 接下来,就靠你自己了……2 不是女神就别想了3 你再来,我可撕票喽4 总有刁民想害朕。。5 每次我想偷偷溜出去玩,我妈就6 看看谁在偷懒你点的每个赞,我都认真当成了喜欢

C#内建接口:IEnumerable

这节讲一下接口IEnumerable。01什么是Enumerable在一些返回集合数据的接口中,我们经常能看到IEnumerable接口的身影。那什么是Enumerable呢?首先它跟C#中的enum关键字所表达的意思是不同的, 从翻译上来看:可枚举的,展开…

ubuntu,kali linux和windows三系统流水账——写给自己

我先说一下ubuntu和windows双系统安装的几种方法,最后总结kali linux的安装,想起什么写什么,所以有点乱。然后记录一下自己的使用过程中遇见的问题和解决的方法,还有我的个人建议。 我个人安装的是目前最新的ubuntu16.04LTS。wind…

一个富二代仅凭“1+1”就压制了全世界的数学家两个世纪......

全世界只有3.14 % 的人关注了爆炸吧知识在数学界,“11”是一个超级大难题,吸引了许多优秀的数学家去攻关打boss。但至今还未有人闯关成功。这位被众多数学家恨得牙痒痒的罪魁祸首就是——克里斯蒂安哥德巴赫。克里斯蒂安哥德巴赫1690年3月18日&#xff0…

Android框架之网络开发框架Volley

1. Volley简介 我们平时在开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用HTTP协议来发送和接收网络数据。Android 系统中主要提供了两种方式来进行HTTP通信,HttpURLConnection和HttpClient,几乎在任何项目…

史上最会抄的数学家!把阿拉伯数字直接抄进自己的书里,连中国几千年前的名著都惨遭毒手.........

全世界只有3.14 % 的人关注了爆炸吧知识大家都喜欢《蒙娜丽莎的微笑》,但你知道她为什么好看吗?《蒙娜丽莎的微笑》没错,她符合黄金分割法0.618原则嘛!但你知道这世界上还有一个数列版的黄金分割法的吗?这个数列就是斐…

求数组里面的最大值和最小值

题目&#xff1a; 求数组里面的最大值和最小值比如&#xff1a;数组 1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5最大值是5&#xff0c;最小值是1代码实现&#xff1a; #include <stdio.h> int max,min; void getMaxAndMin(int a[],int n){int *q;qa;maxmin*…

【ASP.NET开发】.NET三层架构简单解析

这篇文章本来应该很早就写出来的&#xff0c;但是一直苦于自己的精神能力有限&#xff0c;而且已经到了我们学校的考试周&#xff0c;所以时间上还是有点紧迫。关键的一点就是&#xff0c;找不到合理的思路来写&#xff0c;思路没有的话&#xff0c;就算是再好的素材&#xff0…

C和C++里面常见错误和异常出现怎么解决总结(不断更新)

1、cannot open Debug/first.exe for writing 如下图: 原因:控制台没有关闭,不能写,因为编译的exe文件正在运行,而再次编译是要修改这个exe文件的,因为不让写,所以就抱着这个错。 解决办法:是看有没有运行编译后文件,如果正运行着,就将其关掉。 2、cannot conver…

有关[Http持久连接]的一切,卷给你看

上文中我的结论是&#xff1a; HTTP Keep-Alive 是在应用层对TCP连接进行滑动续约复用&#xff0c; 如果客户端/服务器稳定续约&#xff0c;就成了名副其实的长连接。目前所有的Http网络库都默认开启了HTTP Keep-Alive&#xff0c;今天我们从底层TCP连接和排障角度撕碎HTTP持久…

他从小把数学书当小说看,凭借一本书将全世界狠狠甩在身后,被誉为中国的牛顿...

全世界只有3.14 % 的人关注了爆炸吧知识你知道吗&#xff1f;我国也有牛顿哦。他就是魏晋时期的数学家——刘徽&#xff0c;人称“中国数学史上的牛顿”。刘徽沉迷学习公元225年&#xff0c;刘徽出生在山东滨州邹平市的一所农家小院里。从小&#xff0c;刘徽就表现得与别的孩子…

C和C++语言编程里面常用函数或者编程技巧总结(不断更新)

1、我们输入字符串输出字符串可以这样 char a[20];gets(a);puts(a);puts("hello word"); 2、输出字符串putchar()、printf("%p\n",p);cout<<p; #include<stdio.h> void main(){char a[20]={"chenyu1"};char *c="chenyu2"…

python 3.* + Eclipse mar.2 +pydev 5.0 环境搭建

为什么80%的码农都做不了架构师&#xff1f;>>> 这个是版本问题&#xff0c;官方已给出答案 如果要用pydev 5.0 JDK 必须 1.8&#xff0c;1.7是不行的。 PyDev does not appear after install! Well, the main issue at this time is that PyDev requires Java 8 i…

php7 不是有效的32位,Win7系统安装软件提示“不是有效的win32应用程序”怎么办?...

用户在Win7系统中安装软件时&#xff0c;时常会出现一些64bit和86bit的提示&#xff0c;这个和系统32位与64位有关&#xff0c;笔者便不多说。还有一些在Win7系统中比较少见的提示&#xff1a;“不是有效的Win32程序”会偶尔出现&#xff0c;这类错误发生的原因是为软件不完整或…

关于async和await的探讨

缘起最近在看《深入解析C#&#xff08;第4版&#xff09;》这本书&#xff0c;看到了第五章&#xff0c;这一章节是关于异步。之前对异步这个概念只能算是一知半解&#xff0c;了解了它的概念和用法&#xff0c;但是对它的实际场景和为了解决什么问题而诞生的是不太清楚的。于是…

令人惋惜的天才新秀:16岁上剑桥大学,27岁就出名,数学事业一路畅通无阻,但自从结婚后,人生从此翻天覆地······

全世界只有3.14 % 的人关注了爆炸吧知识据说&#xff0c;在网上流传着这么一则笑话&#xff1a;“费马&#xff0c;泰勒&#xff0c;拉格朗日&#xff0c;洛必达&#xff0c;史称&#xff1a;“马勒格必”。嘘&#xff01;这可不是在口吐芬芳&#xff0c;这可是让无数高数学渣头…

jQuery的.live()和.die()

2019独角兽企业重金招聘Python工程师标准>>> 很多开发者都知道jQuery的.live()方法&#xff0c;他们大部分知道这个函数做什么&#xff0c;但是并不知道是怎么实现的&#xff0c;所以用的并不那么舒适。而且他们却从未听过还有解除绑定的.live()事件的.die()方法。即…

简洁强大的JavaWeb框架Blade

English Blade是什么? blade 是一个轻量级的MVC框架. 它拥有简洁的代码&#xff0c;优雅的设计。 如果你喜欢,欢迎 Star and Fork, 谢谢! 特性 [x] 轻量级。代码简洁,结构清晰,更容易开发[x] 模块化(你可以选择使用哪些组件)[x] 插件扩展机制[x] Restful风格的路由接口[x] 多种…