AsyncAPI 试用
AsyncAPI 提供了类似openapi的代码生成,以下demo,来自官方,只是目前官方的generator有些问题以下
同时说明运行中的一些问题
环境准备
主要是安装依赖组件
npm install -g asyncapi-generator mqtt
定义AsyncAPI
稍有改动,主要是channel(mqtt 的topic)
- yaml 文件
asyncapi: '2.0.0'
info:
title: Streetlights API
version: '1.0.0'
description: |
The Smartylighting Streetlights API allows you
to remotely manage the city lights.
license:
name: Apache 2.0
url: 'https://www.apache.org/licenses/LICENSE-2.0'
servers:
mosquitto:
url: test.mosquitto.org
protocol: mqtt
channels:
dalong/measured:
publish:
summary: Inform about environmental lighting conditions for a particular streetlight.
message:
payload:
type: object
properties:
id:
type: integer
minimum: 0
description: Id of the streetlight.
lumens:
type: integer
minimum: 0
description: Light intensity measured in lumens.
sentAt:
type: string
format: date-time
description: Date and time when the message was sent.
- 生成代码命令
ag asyncapi.yaml nodejs -p server=mosquitto
- 简单说明
如果直接使用url test.mosquitto.org 会有解析的问题,如下:
Something went wrong:
Template render error: (unknown path) [Line 29, Column 36]
TypeError [ERR_INVALID_URL]: Invalid URL: test.mosquitto.org
at Object._prettifyError (/usr/local/lib/node_modules/asyncapi-generator/node_modules/nunjucks/src/lib.js:36:11)
at /usr/local/lib/node_modules/asyncapi-generator/node_modules/nunjucks/src/environment.js:567:19
at Template.root [as rootRenderFunc] (eval at _compile (/usr/local/lib/node_modules/asyncapi-generator/node_modules/nunjucks/src/environmen
t.js:637:18), <anonymous>:83:3)
at Template.render (/usr/local/lib/node_modules/asyncapi-generator/node_modules/nunjucks/src/environment.js:556:10)
at Environment.renderString (/usr/local/lib/node_modules/asyncapi-generator/node_modules/nunjucks/src/environment.js:380:17)
at Promise (/usr/local/lib/node_modules/asyncapi-generator/lib/generator.js:507:21)
at new Promise (<anonymous>)
at Generator.renderString (/usr/local/lib/node_modules/asyncapi-generator/lib/generator.js:506:12)
at Generator.renderFile (/usr/local/lib/node_modules/asyncapi-generator/lib/generator.js:531:19)
at <anonymous>
解决方法:临时修改为一个url 格式的比如test.mosquitto.org:1883 生成代码之后再修改回来
- 生成效果
Done! ✨
Check out your shiny new generated files at /Users/dalong/mylearning/asyncapi-learning/first/streetlights.

- 修改几处生成的代码
配置文件:
config/common.yml:
如下:
default:
app:
name: Streetlights API
version: 1.0.0
broker:
mqtt:
url: mqtt://test.mosquitto.org
topics: ["dalong/measured"]
qos:
protocol: mqtt
retain:
subscribe: true
development:
test:
staging:
production:
路由以及handler修改:
路由: 
随便些一个名字,注意后边handler 需要和这个一样

启动&&测试
- 安装npm依赖
yarn
- 启动
yarn start
- 模拟消息发送
mqtt pub -t 'dalong/measured' -h 'test.mosquitto.org' -m '{"id": 1111, "lumens": 3, "sentAt": "2019-10-06T12:34:32.000Z"}'
- 效果

说明
以上是一个简单的试用,以及在使用中碰到的问题,AsyncAPI 是一个很不错的编写事件驱动应用的指南
参考资料
https://www.asyncapi.com/docs/tutorials/streetlights/
https://github.com/asyncapi/generator
http://test.mosquitto.org/
https://github.com/rongfengliang/asyncapi-streetlights-demo
AsyncAPI 试用的更多相关文章
- SharePoint Online 申请试用链接地址
SharePoint Online 申请试用链接地址: https://products.office.com/en-us/business/compare-office-365-for-busine ...
- 活动助手Beta用户试用报告
用户试用报告 1.面向参与者用户 1.1 日常参加各类学习(水综测)活动中,有没有遇到以下问题: (1) 信息来源混乱,不知道靠不靠谱 (2) 每次报名都要重新填写自己的学号手机号,有时候填错了就没综 ...
- 创建WP8试用应用
参考资料: 创建 Windows Phone 的试用应用 如何在 Windows Phone 应用中实现试用体验 Windows Phone 7 开发 31 日谈——第23日:提供试用版应用程序 对资 ...
- 达梦7的试用 与SQLSERVER的简单技术对比
达梦7的试用 与SQLSERVER的简单技术对比 达梦数据库公司推出了他们的数据库服务管理平台,可以在该平台使用达梦数据库而无须安装达梦7数据库 地址:http://online.dameng.com ...
- Beta版本——用户试用与调研报告
1 引言 1.1 系统概述 毕设导师智能分配系统是一个用来简化传统手工匹配繁琐操作的系统.本系统将学生报志愿.系负责人收集整理数据.相关人员进行手工分配.反馈选择结果等繁琐的操作转移到线上.把毕设 ...
- 【记录】尝试用android-logging-log4j去实现log输出内容到sd卡中的文件的功能
[背景] 折腾: [记录]给Android中添加log日志输出到文件 期间,已经试了: [记录]尝试用android中microlog4android实现log输出到文件的功能 但是不好用. 然后就是 ...
- 代码阅读分析工具Understand 2.0试用
Understand 2.0是一款源代码阅读分析软件,功能强大.试用过一段时间后,感觉相当不错,确实可以大大提高代码阅读效率.由于Understand功能十分强大,本文不可能详尽地介绍它的所有功能,所 ...
- 如何申请国际版Office365和Azure的试用账号
关键字:国际版.Office365.Azure.试用账号.1美元.信用卡 待续
- Android N preview 试用
一.下载更新包 下载地址:https://developer.android.com/intl/zh-cn/preview/download.html 注意下载适合你手机的安装包哦 二.把你手机的oe ...
随机推荐
- python3使用smtplib发送邮件,带xlsx附件
一.概述 最近在做一个统计报表,需要发送邮件,并带附件的. 在之前的文章中 https://www.cnblogs.com/xiao987334176/p/10022026.html 已经实现了发送邮 ...
- 大数据技术 - 为什么是SQL
在大数据处理以及分析中 SQL 的普及率非常高,几乎是每一个大数据工程师必须掌握的语言,甚至非数据处理岗位的人也在学习使用 SQL.今天这篇文章就聊聊 SQL 在数据分析中作用以及掌握 SQL 的必要 ...
- Oralce学习笔记(六)
逻辑体系结构与Data file 逻辑体系结构关系图 逻辑体系结构最小单位BLOCK的研究 block能装多少行数据: drop table test_block_num purge; create ...
- MVC学习笔记(六)---遇到的小问题汇总
一.MVC中Controller中返回两个对象的写法如下: , msg = "成功", user = user, userInfo = person }); 二.前台向后台传入带有 ...
- org.springframework.stereotype
org.springframework.stereotype 1.@controller 控制器(注入服务) 2.@service 服务(注入dao) 3.@repository dao(实现dao访 ...
- vs2019 netocore项目本地程序ip地址访问需修改的配置文件
IISPress启动项目后,打开IISPress托盘可以看到当前项目 根据图中标识出来的applicationhost.config文件路径,一般为你的项目解决方案目录下的.vs\解决方案文件夹\co ...
- TinyXPath 对于xpath标准的支持测试
xpath是一种基于xml的查询标准,一般的xml解析工具都具有,有的因为卓越的xpath性能而出名,其匹配查询算法牛逼而又高效,和正则有的一拼.虽然我现在大部分从事前端工作了,但是对于原理性的东西还 ...
- java基础小练习,1-打印一百次(1~10)的随机数,2-固定一个随机数(1~100),然后猜出他,3-定义以指定格式打印集合(ArrayList类型作为参数),使用{}括起来,使用@代替,分隔每个元素
推荐自己码一下,可以使用别的方法,面向对象,不需要注重过程 /* 题目:我需要打印一百次(1~10)的随机数 */ import java.util.Random; public class demo ...
- Python语言控制运算的优先级
Python语言碰上计算式同时出现在一个指令内时,除了括号"(".")"最优外,其余计算优先次序如下: 次方(**). 乘法.除法.求余数(%).求整数(//) ...
- 剑指前端(前端入门笔记系列)——DOM(基本组成与操作)
DOM——基本组成与操作 DOM是针对HTML和XML文档的一个API(应用程序编程接口).DOM描绘了一个层次化的节点树,允许开发人员添加.移除和修改页面的某一部分.他给文档提供了一种结构化的表达方 ...