• 关于 HTTP消息结构 的搜索结果

回答

客户端文档主要面向在钉钉客户端app使用h5开发的场景. PC端文档主要面向在钉钉PC使用h5开发的场景. PC端的jsapi和客户端是不同的 服务端文档主要面向外部服务端使用http接口调用钉钉的场景 群会话接口--〉创建会话,提到了请求包结构体。 请求结构按照http的post发过来即可。 请求头要求application/json 具体怎么发http请求百度即可 普通消息接口,发送会话消息中提到了CID,cid确实是要从客户端获取。 获取的方法参考 客户端文档

蛋蛋oo蛋蛋 2019-12-02 02:51:34 0 浏览量 回答数 0

回答

消息队列 AMQP 版接口调用是向消息队列 AMQP 版 API 的服务端地址发送 HTTP GET 请求,并按照接口说明在请求中加入相应请求参数,调用后系统会返回处理结果。请求及返回结果都使用 UTF-8 字符集进行编码。 请求结构 消息队列 AMQP 版的 API 是 RPC 风格,您可以通过发送 HTTP GET 请求调用消息队列 AMQP 版API。 其请求结构如下: http://Endpoint/?Action=xx&Parameters 其中: Endpoint: 消息队列 AMQP 版 API 的服务接入地址为 amqp-open.aliyuncs.com。 Action:要执行的操作,如调用 ListInstances 查询已创建的消息队列 AMQP 版实例。 Version:要使用的 API 版本,消息队列 AMQP 版的 API 版本是 2019-12-12。 Parameters:请求参数,每个参数之间用“&”分隔。 请求参数由公共请求参数和 API 自定义参数组成。公共参数中包含 API 版本号、身份验证等信息,详情请参见公共参数。 下面是一个调用 ListInstances 接口查询已创建的消息队列 AMQP 版实例的示例。 说明 为了便于您查看,本文档中的示例都做了格式化处理。 https://amqp-open.aliyuncs.com/?Action=ListInstances &Format=JSON &Version=2020-12-12 &Signature=xtC1HBet6MjHTQVZLo%2Fbm4dlJ0s%3D &SignatureMethod=HMAC-SHA1 &SignatureNonce=e7b1f31150be45594905ce6d28561286 &SignatureVersion=1.0 &AccessKeyId=key-test &TimeStamp=2020-02-10T08%3A43%3A05Z …

保持可爱mmm 2020-03-28 20:35:05 0 浏览量 回答数 0

回答

MQTT协议 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)最早是IBM开发的一个即时通讯协议,MQTT协议是为大量计算能力有限且工作在低带宽、不可靠网络的远程传感器和控制设备通讯而设计的一种协议。 MQTT协议的优势是可以支持所有平台,它几乎可以把所有的联网物品和互联网连接起来。 它具有以下主要的几项特性:1、使用发布/订阅消息模式,提供一对多的消息发布和应用程序之间的解耦;2、消息传输不需要知道负载内容;3、使用 TCP/IP 提供网络连接;4、有三种消息发布的服务质量:QoS 0:“最多一次”,消息发布完全依赖底层 TCP/IP 网络。分发的消息可能丢失或重复。例如,这个等级可用于环境传感器数据,单次的数据丢失没关系,因为不久后还会有第二次发送。QoS 1:“至少一次”,确保消息可以到达,但消息可能会重复。QoS 2:“只有一次”,确保消息只到达一次。例如,这个等级可用在一个计费系统中,这里如果消息重复或丢失会导致不正确的收费。5、小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量;6、使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制;在MQTT协议中,一个MQTT数据包由:固定头(Fixed header)、 可变头(Variable header)、 消息体(payload)三部分构成。MQTT的传输格式非常精小,最小的数据包只有2个bit,且无应用消息头。下图是MQTT为可靠传递消息的三种消息发布服务质量 发布/订阅模型允许MQTT客户端以一对一、一对多和多对一方式进行通讯。 下图是MQTT的发布/订阅消息模式 CoAP协议 CoAP是受限制的应用协议(Constrained Application Protocol)的代名词。由于目前物联网中的很多设备都是资源受限型的,所以只有少量的内存空间和有限的计算能力,传统的HTTP协议在物联网应用中就会显得过于庞大而不适用。因此,IETF的CoRE工作组提出了一种基于REST架构、传输层为UDP、网络层为6LowPAN(面向低功耗无线局域网的IPv6)的CoAP协议。 CoAP采用与HTTP协议相同的请求响应工作模式。CoAP协议共有4中不同的消息类型。CON——需要被确认的请求,如果CON请求被发送,那么对方必须做出响应。NON——不需要被确认的请求,如果NON请求被发送,那么对方不必做出回应。ACK——应答消息,接受到CON消息的响应。RST——复位消息,当接收者接受到的消息包含一个错误,接受者解析消息或者不再关心发送者发送的内容,那么复位消息将会被发送。 CoAP消息格式使用简单的二进制格式,最小为4个字节。 一个消息=固定长度的头部header + 可选个数的option + 负载payload。Payload的长度根据数据报长度来计算。 主要是一对一的协议 举个例子: 比如某个设备需要从服务器端查询当前温度信息。 请求消息(CON): GET /temperature , 请求内容会被包在CON消息里面响应消息 (ACK): 2.05 Content “22.5 C” ,响应内容会被放在ACK消息里面 CoAP与MQTT的区别 MQTT和CoAP都是行之有效的物联网协议,但两者还是有很大区别的,比如MQTT协议是基于TCP,而CoAP协议是基于UDP。从应用方向来分析,主要区别有以下几点: 1、MQTT协议不支持带有类型或者其它帮助Clients理解的标签信息,也就是说所有MQTT Clients必须要知道消息格式。而CoAP协议则相反,因为CoAP内置发现支持和内容协商,这样便能允许设备相互窥测以找到数据交换的方式。 2、MQTT是长连接而CoAP是无连接。MQTT Clients与Broker之间保持TCP长连接,这种情形在NAT环境中也不会产生问题。如果在NAT环境下使用CoAP的话,那就需要采取一些NAT穿透性手段。 3、MQTT是多个客户端通过中央代理进行消息传递的多对多协议。它主要通过让客户端发布消息、代理决定消息路由和复制来解耦消费者和生产者。MQTT就是相当于消息传递的实时通讯总线。CoAP基本上就是一个在Server和Client之间传递状态信息的单对单协议。 HTTP协议http的全称是HyperText Transfer Protocol,超文本传输协议,这个协议的提出就是为了提供和接收HTML界面,通过这个协议在互联网上面传出web的界面信息。 HTTP协议的两个过程,Request和Response,两个都有各自的语言格式,我们看下是什么。请求报文格式:(注意这里有个换行) 响应报文格式:(注意这里有个换行) 方法method:       这个很重要,比如说GET和POST方法,这两个是很常用的,GET就是获取什么内容,而POST就是向服务器发送什么数据。当然还有其他的,比如HTTP 1.1中还有:DELETE、PUT、CONNECT、HEAD、OPTIONS、TRACE等一共8个方法(HTTP Method历史:HTTP 0.9 只有GET方法;HTTP 1.0 有GET、POST、HEAD三个方法)。请求URL:       这里填写的URL是不包含IP地址或者域名的,是主机本地文件对应的目录地址,所以我们一般看到的就是“/”。版本version:       格式是HTTP/.这样的格式,比如说HTTP/1.1.这个版本代表的就是我们使用的HTTP协议的版本,现在使用的一般是HTTP/1.1状态码status:       状态码是三个数字,代表的是请求过程中所发生的情况,比如说200代表的是成功,404代表的是找不到文件。原因短语reason-phrase:       是状态码的可读版本,状态码就是一个数字,如果你事先不知道这个数字什么意思,可以先查看一下原因短语。首部header:       注意这里的header我们不是叫做头,而是叫做首部。可能有零个首部也可能有多个首部,每个首部包含一个名字后面跟着一个冒号,然后是一个可选的空格,接着是一个值,然后换行。实体的主体部分entity-body:       实体的主体部分包含一个任意数据组成的数据块,并不是所有的报文都包含实体的主体部分,有时候只是一个空行加换行就结束了。 下面我们举个简单的例子: 请求报文:GET /index.html HTTP/1.1    Accept: text/*Host: www.myweb.com 响应报文:HTTP/1.1 200 OKContent-type: text/plainContent-length: 3  HTTP与CoAP的区别 CoAP是6LowPAN协议栈中的应用层协议,基于REST(表述性状态传递)架构风格,支持与REST进行交互。通常用户可以像使用HTTP协议一样用CoAP协议来访问物联网设备。而且CoAP消息格式使用简单的二进制格式,最小为4个字节。HTTP使用报文格式对于嵌入式设备来说需要传输数据太多,太重,不够灵活。 XMPP协议 XMPP(可扩展通讯和表示协议)是一种基于可扩展标记语言(XML)的协议, 它继承了在XML环境中灵活的发展性。可用于服务类实时通讯、表示和需求响应服务中的XML数据元流式传输。XMPP以Jabber协议为基础,而Jabber是即时通讯中常用的开放式协议。   基本网络结构 XMPP中定义了三个角色,客户端,服务器,网关。通信能够在这三者的任意两个之间双向发生。 服务器同时承担了客户端信息记录,连接管理和信息的路由功能。网关承担着与异构即时通信系统 的互联互通,异构系统可以包括SMS(短信),MSN,ICQ等。基本的网络形式是单客户端通过 TCP/IP连接到单服务器,然后在之上传输XML。 功能 传输的是与即时通讯相关的指令。在以前这些命令要么用2进制的形式发送(比如QQ),要么用纯文本指令加空格加参数加换行符的方式发送(比如MSN)。而XMPP传输的即时通讯指令的逻辑与以往相仿,只是协议的形式变成了XML格式的纯文本。举个例子看看所谓的XML(标准通用标记语言的子集)流是什么样子的?客户端:123456<?xmlversion='1.0'?>to='example_com'xmlns='jabber:client'xmlns:stream='http_etherx_jabber_org/streams'version='1.0'>服务器:1234567<?xmlversion='1.0'?>from='example_com'id='someid'xmlns='jabber:client'xmlns:stream='http_etherx_jabber_org/streams'version='1.0'>工作原理XMPP核心协议通信的基本模式就是先建立一个stream,然后协商一堆安全之类的东西, 中间通信过程就是客户端发送XML Stanza,一个接一个的。服务器根据客户端发送的信息 以及程序的逻辑,发送XML Stanza给客户端。但是这个过程并不是一问一答的,任何时候 都有可能从一方发信给另外一方。通信的最后阶段是关闭流,关闭TCP/IP连接。  网络通信过程中数据冗余率非常高,网络流量中70% 都消耗在 XMPP 协议层了。对于物联网来说,大量计算能力有限且工作在低带宽、不可靠网络的远程传感器和控制设备,省电、省流量是所有底层服务的一个关键技术指标,XMPP协议看起来已经落后了。 SoAP协议 SoAP(简单对象访问协议)是交换数据的一种协议规范,是一种轻量的、简单的、 基于可扩展标记语言(XML)的协议,它被设计成在WEB上交换结构化的和固化的信息。  SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(HTTP), 简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到 远程过程调用(RPC)等大量的应用程序。SOAP使用基于XML的数据结构和超文本传输协议 (HTTP)的组合定义了一个标准的方法来使用Internet上各种不同操作环境中的分布式对象。 总结: 从当前物联网应用发展趋势来分析,MQTT协议具有一定的优势。因为目前国内外主要的云计算服务商,比如阿里云、AWS、百度云、Azure以及腾讯云都一概支持MQTT协议。还有一个原因就是MQTT协议比CoAP成熟的要早,所以MQTT具有一定的先发优势。但随着物联网的智能化和多变化的发展,后续物联网应用平台肯定会兼容更多的物联网应用层协议。 作者:HFK_Frank 来源:CSDN 原文:https://blog.csdn.net/acongge2010/article/details/79142380 版权声明:本文为博主原创文章,转载请附上博文链接!

auto_answer 2019-12-02 01:55:21 0 浏览量 回答数 0

消息队列 RocketMQ 9.9元包月起

消息队列 RocketMQ 9.9元包月起,另含2000万次API 免费调用额度

回答

请求结构 消息队列 Kafka 版的 API 是 RPC 风格,您可以通过发送 HTTP 请求调用 消息队列 Kafka 版 API。 其请求结构如下: http://Endpoint/?Action=xx&Parameters 其中: Endpoint: 消息队列 Kafka 版 API 的服务接入地址。不同地域的接入地址如下表所示。 表 1. 消息队列 Kafka 版接入地址 地域名称 RegionId Domain 华东1(杭州) cn-hangzhou alikafka.cn-hangzhou.aliyuncs.com 华东2(上海) cn-shanghai alikafka.cn-shanghai.aliyuncs.com 华北1(青岛) cn-qingdao alikafka.cn-qingdao.aliyuncs.com 华北2(北京) cn-beijing alikafka.cn-beijing.aliyuncs.com 华北3(张家口) cn-zhangjiakou alikafka.cn-zhangjiakou.aliyuncs.com 华北5(呼和浩特) cn-huhehaote alikafka.cn-huhehaote.aliyuncs.com 华南1(深圳) cn-shenzhen alikafka.cn-shenzhen.aliyuncs.com 中国(香港) cn-hongkong alikafka.cn-hongkong.aliyuncs.com 新加坡 ap-southeast-1 alikafka.ap-southeast-1.aliyuncs.com 印度(孟买) ap-south-1 alikafka.ap-south-1.aliyuncs.com 印度尼西亚(雅加达) ap-southeast-5 slb.ap-southeast-5.aliyuncs.com Action:要执行的操作。例如,调用 GetInstanceList 查询已创建的消息队列 Kafka 版实例。 Version:要使用的 API 版本。消息队列 Kafka 版的 API 版本是 2019-09-16。 Parameters:请求参数。每个参数之间用 “&” 分隔。 请求参数由公共请求参数和 API 自定义参数组成。公共参数中包含 API 版本号、身份验证等信息。详情请参见公共参数。 以下是一个调用 GetInstanceList 接口查询已创建的消息队列 Kafka 版实例的示例: 说明 为了便于您查看,本文中的示例都做了格式化处理。 https://alikafka.aliyuncs.com/?Action=GetInstanceList &Format=JSON &Version=2019-09-16 &Signature=xxxx%xxxx%%3D &SignatureMethod=HMAC-SHA1 &SignatureNonce=87dacc12d1a92bb296d2b398b454884b &SignatureVersion=1.0 &AccessKeyId=key-test &Timestamp=2020-01-06T09 … API 授权 为了确保您的账号安全,建议您使用子账号的身份凭证调用 API。如果您使用 RAM 账号调用消息队列 Kafka 版,您需要为该 RAM 账号创建、附加相应的授权策略。 消息队列 Kafka 版中可授权的资源和接口列表,请参见RAM 鉴权。 API 签名 对于每一次 HTTP 或者 HTTPS 协议请求,我们会根据访问中的签名信息验证访问请求者身份。具体使用 AccessKey 的 AccessKeyId 和 AccessKeySecret 对称加密验证实现。消息队列 Kafka 版通过使用 AccessKey ID 和 AccessKey Secret 进行对称加密的方法来验证请求的发送者身份。AccessKey 是为阿里云账号和 RAM 用户发布的一种身份凭证(类似于用户的登录密码),其中 AccessKey ID 用于标识访问者的身份,AccessKey Secret 是用于加密签名字符串和服务器端验证签名字符串的密钥,必须严格保密。API 签名方法,请参见签名机制。

保持可爱mmm 2020-03-28 17:56:33 0 浏览量 回答数 0

回答

感谢支持~ 阿里云,免费公测的范围是:RDS只读实例,开放结构化数据服务OTS,开放归档服务OAS,采云间DPC,云引擎ACE,简单日志服务SLS,消息队列服务MQS,开放搜索服务Open Search,性能测试服务PTS 活动地址: http://promotion.aliyun.com/act/aliyun/freebeta/

qiujin2012 2019-12-02 00:38:49 0 浏览量 回答数 0

回答

工作流消息通知配置 在控制台—》媒体转码—》媒体库设置—》工作流—》设置工作流配置通知,通知创建可参考【通知创建】;12 配置成功后,在媒体库上传资源或者采用其他方式上传资源到工作流的输入bucket的输入路径下,就会触发消息服务的通知。 注意事项: 配置的通知必须选择与工作流相同区域的通知才可以; 2.2获取通知消息 用户可以通过代码获取通知消息,MNS 通过发送 POST 请求将 Notifications 推送到 Endpoint 端,Notifications 格式支持两种:XML 完整格式和 SIMPLIFIED 精简格式;用户正常处理通知需程序端接收到通知后,响应204状态码,如果未响应204状态码,对应的通知会重发。 php 获取通知示例如下: 进阶示例:验证对应通知是否是源自消息服务,并接收通知,参考:HTTP的消息接收服务 Java 实现示例; 2.3 解析通知消息 MTS通知的基本结构由两部分构成:消息服务结构体及消息正文;其中消息正文是MTS服务的消息结构体。具体请参考如下示例: topicowner DBtest subscriber dctest 63F5B22A460AE417-1-159CB2EB8BC-200000003 07C9BDAF7FF4EF307C523812565556AF {"RunId":"9c897328fb084b089bb73e21fdba16f3","Name":"activityStart","Type":"Start","State":"Success","MediaWorkflowExecution":{"MediaWorkflowId":"8e24e391e3fe4887b236668368189e74","Name":"新建工作流_1481600805788","RunId":"9c897328fb084b089bb73e21fdba16f3","MediaId":"4a4e965cb652413a91060be2706ddfbe","Input":{"InputFile":{"Bucket":"hzaaa","Location":"oss-cn-hangzhou","Object":"m3u8SegementIn72/1.mp4"}},"State":"Running","ActivityList":[{"RunId":"9c897328fb084b089bb73e21fdba16f3","Name":"activityStart","Type":"Start","State":"Success","StartTime":"2017-01-23T11:55:53Z","EndTime":"2017-01-23T11:55:53Z"}],"CreationTime":"2017-01-23T11:55:53Z"}} 1485172553916 https://mnstest.oss-cn-hangzhou.aliyuncs.com/x509_public_certificate.pem 其中: topicowner DBtest subscriber dctest 63F5B22A460AE417-1-159CB2EB8BC-200000003 07C9BDAF7FF4EF307C523812565556AF 该部分内容是消息服务结构体,消息服务结构体各个标签含义看【标签含义】。 {"RunId":"9c897328fb084b089bb73e21fdba16f3","Name":"activityStart","Type":"Start","State":"Success","MediaWorkflowExecution":{"MediaWorkflowId":"8e24e391e3fe4887b236668368189e74","Name":"新建工作流_1481600805788","RunId":"9c897328fb084b089bb73e21fdba16f3","MediaId":"4a4e965cb652413a91060be2706ddfbe","Input":{"InputFile":{"Bucket":"hzaaa","Location":"oss-cn-hangzhou","Object":"m3u8SegementIn72/1.mp4"}},"State":"Running","ActivityList":[{"RunId":"9c897328fb084b089bb73e21fdba16f3","Name":"activityStart","Type":"Start","State":"Success","StartTime":"2017-01-23T11:55:53Z","EndTime":"2017-01-23T11:55:53Z"}],"CreationTime":"2017-01-23T11:55:53Z"}} Message标签中的内容是MTS消息结构体,用户可以根据message中的内容解析得到输入文件URL(根据”Input”标签内容拼接得到),实例ID(”RunId”)等;用户可以调用MTSAPI接口,根据输入URL查询得到媒体转码结果,由于可能存在同名文件上传的场景,导致相同的URL触发了多次工作流任务,一个工作流可以配置多个转码截图任务,所以一个媒体转码结果可能包含多个实例的执行结果,用户可以根据通知消息中的实例ID定位到该次转码任务结果; Message常见字段含义看下表: 3 Message中其他字段的含义看【字段含义】 注意事项: Message中的”Type”:”Start”表示开始转码,”Type”:”Report”表示转码结束;

保持可爱mmm 2020-03-30 11:57:37 0 浏览量 回答数 0

回答

号码隐私保护支持基于URL发送HTTP/HTTPS请求。请求参数需要包含在URL中,请求及返回结果都使用 UTF-8 字符集编码。 请求结构示例 以下为一条SendSms未编码的URL请求示例: https://dyplsapi.aliyuncs.com/?Action=BindAxb&<公共请求参数> https 指定了请求通信协议。 dyplsapi.aliyuncs.com 指定了号码隐私保护的服务接入地址(Endpoint)。 Action=BindAxb 指定了要调用的API。 <公共请求参数> 是系统规定的其他公共参数。 请求协议 请求中使用的协议包括 支持HTTP或HTTPS协议请求通信。为了获得更高的安全性,推荐您使用HTTPS协议发送请求。 绑定API采用Rest协议,其中签名算法使用了阿里云的POP协议。 发生通话行为后的话单消息回执采用的是阿里云消息服务MNS实现。 服务地址 号码隐私保护统一使用服务地址dyplsapi.aliyuncs.com。 公共请求头和公共响应头 API接口中使用了公共请求头(Common Request Headers)和公共响应头(Common Response Headers),这些内容可以被所有的号码隐私保护请求使用。

保持可爱mmm 2020-03-27 00:22:35 0 浏览量 回答数 0

问题

【精品问答】消息服务 MNS

montos 2020-04-08 12:35:50 2 浏览量 回答数 1

问题

Java Service Wrapper封装服务?报错

爱吃鱼的程序员 2020-06-08 18:03:42 0 浏览量 回答数 1

问题

如何使用表格存储的 API

云栖大讲堂 2019-12-01 20:58:54 1796 浏览量 回答数 0

问题

如何使用API

云栖大讲堂 2019-12-01 21:04:08 1458 浏览量 回答数 0

问题

dubbo 支持的通信协议?有哪些序列化协议?说下 Hessian 的数据结构?【Java问答】48

剑曼红尘 2020-07-01 15:18:43 7 浏览量 回答数 1

回答

详细解答可以参考官方帮助文档var push = new ALY.PUSH({ accessKeyId: '<your access key id>', secretAccessKey: '<your access key secret>', endpoint: 'http://cloudpush.aliyuncs.com', apiVersion: '2015-08-27' });// 推送消息到 iOSpush.push({ AppKey: '<your AppKey>', // 推送目标: device:推送给指定设备; account:推送给指定帐号;all:推送给全部 Target: 'all', //根据Target来设定,如Target=device, 则对应的值为 设备id1,设备id2. 多个值使用逗号分隔.(帐号与设备有一次最多100个的限制) TargetValue: 'all', Type: 0, // 0:表示消息,默认值;1:表示通知。 // 设备类型deviceType 取值范围为:0~3. iOS设备: 0; Android设备: 1; 全部: 3, 这是默认值. DeviceType: 0, Title: 'title', Body: 'body123', Summary: 'summary', // 离线消息的过期时间,过期则不会再被发送。离线消息最长保存72小时,过期时间时长不会超过发送时间加72小时。时间格式按照ISO8601标准表示,并需要使用UTC时间,格式为YYYY-MM-DDThh:mm:ssZ //ExpireTime: (new Date((new Date()).getTime() + 12 * 3600 * 1000)).toISOString(), ApnsEnv: "DEV", // 当APP不在线时候,是否通过通知提醒,仅对iOS消息使用 //Remind: false, // 推送控制, 是否离线存储 //StoreOffline: false, iOSBadge:'6', //iOS通知标题(iOS 10+) iOSTitle:'iOS 10 Title', //iOS通知副标题(iOS 10+) iOSSubtitle:'iOS 10 Subtitle', //使能通知扩展处理(iOS 10 +) iOSMutableContent: true, //设定通知Category(iOS 10+) iOSNotificationCategory:'test_category', //自定义的kv结构(iOS10+ 可以使用关键字attachment来指定富媒体推送通知的资源Url iOSExtParameters:"{\"attachment\":\"https://xxxx.xxx/notification_pic.png\",\"k1\":\"v1\"}"}, function (err, res) { console.log(err, res);});return ;

2019-12-01 23:15:26 0 浏览量 回答数 0

回答

3######代价比较大巴######http://www.oschina.net/widgets/check-top-log?last=10009347######回复 @kacc850 : ajax论询 打开firebug就可以看到请求######OS首页右侧 是ajax? 前端轮询吗 局部刷新 还是类似于微博哪种######用第三方推送服务呗,时时推送######有具体案例么。。。是服务端监听数据库变化吗######第三种,而且现在都有类似的线程框架。###### 如果限制使用html5 websocket是个不错的选择  ######这种WEB网站一般来说本身就不是长连接,用户的理解就是要刷新才能获取新数据,所以我觉得不用推送,至于轮询我也觉得没必要,一般的做法 就是用户发消息给你 然后你会插入数据库 然后把消息的id放到缓存,每次用户刷新从缓存获取....当然如果有全双工的websocket的支持下,可以用推送, 根据具体业务来吧###### 引用来自“Ambitor”的评论这种WEB网站一般来说本身就不是长连接,用户的理解就是要刷新才能获取新数据,所以我觉得不用推送,至于轮询我也觉得没必要,一般的做法 就是用户发消息给你 然后你会插入数据库 然后把消息的id放到缓存,每次用户刷新从缓存获取....当然如果有全双工的websocket的支持下,可以用推送, 根据具体业务来吧 你的意思是: 1:web一般不需要这样做shi吗,我lz的三点都不是最好解决方案? 2:如果要做成这种效果,你建议是 其他人发给对方消息后,或者新动态入库时,同时写入到缓存里。 还是新动态入库后,计算多少条信息,然后放在缓存里,用户刷新页面时 从缓存里直接获取? 那如果这样,DB库怎么直接到缓存呢? 肯定是后端先自己执行一遍是吧。 自己服务器执行 也是多久检查一次 。只不过 我是前端AJAX轮询,你这个是后端检查。因为这个消息不是公共推送消息,后端检查一次放入缓存里,不见得前端所有会员都会看到这条消息,而是不同的人看不同的消息,所以我觉得你这个方案不合适。 3:OSCHINA用的是前端轮询,多久执行一次呢。 为什么我直接首页点发表,就能实时看到呢。 是不是 他们不直接入库,只是先前端js 把我输入框里的数据嵌套在首页。  造成假象,我只是自己看到而已,同一时间其他人看不到。 等待下次轮询时,在正式发布,所有人才能看到。 ###### 引用来自“Ambitor”的评论这种WEB网站一般来说本身就不是长连接,用户的理解就是要刷新才能获取新数据,所以我觉得不用推送,至于轮询我也觉得没必要,一般的做法 就是用户发消息给你 然后你会插入数据库 然后把消息的id放到缓存,每次用户刷新从缓存获取....当然如果有全双工的websocket的支持下,可以用推送, 根据具体业务来吧 引用来自“kacc850”的评论 你的意思是: 1:web一般不需要这样做shi吗,我lz的三点都不是最好解决方案? 2:如果要做成这种效果,你建议是 其他人发给对方消息后,或者新动态入库时,同时写入到缓存里。 还是新动态入库后,计算多少条信息,然后放在缓存里,用户刷新页面时 从缓存里直接获取? 那如果这样,DB库怎么直接到缓存呢? 肯定是后端先自己执行一遍是吧。 自己服务器执行 也是多久检查一次 。只不过 我是前端AJAX轮询,你这个是后端检查。因为这个消息不是公共推送消息,后端检查一次放入缓存里,不见得前端所有会员都会看到这条消息,而是不同的人看不同的消息,所以我觉得你这个方案不合适。 3:OSCHINA用的是前端轮询,多久执行一次呢。 为什么我直接首页点发表,就能实时看到呢。 是不是 他们不直接入库,只是先前端js 把我输入框里的数据嵌套在首页。  造成假象,我只是自己看到而已,同一时间其他人看不到。 等待下次轮询时,在正式发布,所有人才能看到。 DB库怎么直接到缓存呢?---------用户A发信息给B的请求中,除了把消息写数据库 同时把这条信息的id set到缓存。 而用户每次的刷新都会去get这个缓存,就知道有多少条了? 为什么要轮询捏?######另外 osc没有轮询去查 消息条数吧,首页的轮询是 动弹的 请求吧###### 引用来自“Ambitor”的评论这种WEB网站一般来说本身就不是长连接,用户的理解就是要刷新才能获取新数据,所以我觉得不用推送,至于轮询我也觉得没必要,一般的做法 就是用户发消息给你 然后你会插入数据库 然后把消息的id放到缓存,每次用户刷新从缓存获取....当然如果有全双工的websocket的支持下,可以用推送, 根据具体业务来吧 引用来自“kacc850”的评论 你的意思是: 1:web一般不需要这样做shi吗,我lz的三点都不是最好解决方案? 2:如果要做成这种效果,你建议是 其他人发给对方消息后,或者新动态入库时,同时写入到缓存里。 还是新动态入库后,计算多少条信息,然后放在缓存里,用户刷新页面时 从缓存里直接获取? 那如果这样,DB库怎么直接到缓存呢? 肯定是后端先自己执行一遍是吧。 自己服务器执行 也是多久检查一次 。只不过 我是前端AJAX轮询,你这个是后端检查。因为这个消息不是公共推送消息,后端检查一次放入缓存里,不见得前端所有会员都会看到这条消息,而是不同的人看不同的消息,所以我觉得你这个方案不合适。 3:OSCHINA用的是前端轮询,多久执行一次呢。 为什么我直接首页点发表,就能实时看到呢。 是不是 他们不直接入库,只是先前端js 把我输入框里的数据嵌套在首页。  造成假象,我只是自己看到而已,同一时间其他人看不到。 等待下次轮询时,在正式发布,所有人才能看到。 引用来自“Ambitor”的评论 DB库怎么直接到缓存呢?---------用户A发信息给B的请求中,除了把消息写数据库 同时把这条信息的id set到缓存。 而用户每次的刷新都会去get这个缓存,就知道有多少条了? 为什么要轮询捏? 回复 @Ambitor : 那你的意思就是  我在发消息给B时,入库的同时,自动把这条消息放在缓存里。 这个时候,B读取时就不需要从统一数据库里找,而是直接从缓存里提取了是吗?     ---------------------但这样有个问题啊,需要计算啊,比如我发给B 3条信息,放在缓存里,B那边可以显示三条未读的消息,然后点击缓存里可以看到这3条。  那么F也给B发了2条消息,也放在缓存里, 那么B一共收到五条未读消息,怎么计算呢?######回复 @Ambitor : THANKS 我还以为必须db解决呢。 内存缓存用的比较少######这么easy的问题,自己看下缓存支持的数据结构 然后设计下数据结构和key 就搞定了,比如最最简单的方法 设计两个 一个是记录未读消息数,是一个原子自增的数字(比如redis支持的),另外一个记录消息的id(如果并发不高 不用记录 直接查数据库也可以的。) 然后 点了未读消息数 根据未读的ids查找就是。

kun坤 2020-06-07 14:05:28 0 浏览量 回答数 0

回答

请求结构 服务地址 地域 接入地址 杭州 mt.cn-hangzhou.aliyuncs.com 请求体与结果返回 请求体为json结构字符串,服务返回也为json字符串,具体要求参考各API文档,示例请求(java): public class SampleRequest { public static void main(String[] args) { String serviceURL = "http://mt.cn-hangzhou.aliyuncs.com/api/translate/web/ecommerce"; String accessKeyId = "<yourAccessKeyId>";// 使用您的阿里云访问密钥 AccessKeyId String accessKeySecret = "<yourAccessKeySecret>"; // 使用您的阿里云访问密钥 String postBody = "{\n" + " \"FormatType\": \"text\",\n" + " \"SourceLanguage\": \"zh\",\n" + " \"TargetLanguage\": \"en\",\n" + " \"SourceText\": \"大疆无人机\",\n" + " \"Scene\": \"title\"\n" + "}"; // Sender代码请参考帮助文档“签名方法” String result = Sender.sendPost(serviceURL, postBody, accessKeyId, accessKeySecret); System.out.println(result); } } 机器翻译版本 API 版本 接入地址 通用版本 http://mt.cn-hangzhou.aliyuncs.com/api/translate/web/general 电商版本 http://mt.cn-hangzhou.aliyuncs.com/api/translate/web/ecommerce 正常返回 请求正常结果,为json字符串。 错误返回 {"errorCode":"errorCode","errorMsg":"错误消息"} 请求长度限制 请求长度限制请参考具体开发指南。 字符编码 请求及返回结果都使用 UTF-8 字符集进行编码。

保持可爱mmm 2020-04-05 22:53:54 0 浏览量 回答数 0

问题

【阿里云产品公测】消息队列服务MQS java SDK 机器人应用 初体验

啊里新人 2019-12-01 21:08:47 25480 浏览量 回答数 18

回答

Java架构师,首先要是一个高级java攻城狮,熟练使用各种框架,并知道它们实现的原理。jvm虚拟机原理、调优,懂得jvm能让你写出性能更好的代码;池技术,什么对象池,连接池,线程池……    Java反射技术,写框架必备的技术,但是有严重的性能问题,替代方案java字节码技术;nio,没什么好说的,值得注意的是”直接内存”的特点,使用场景;java多线程同步异步;java各种集合对象的实现原理,了解这些可以让你在解决问题时选择合适的数据结构,高效的解决问题,比如hashmap的实现原理,好多五年以上经验的人都弄不清楚,还有为什扩容时有性能问题?不弄清楚这些原理,就写不出高效的代码,还会认为自己做的很对;总之一句话越基础的东西越重要,很多人认为自己会用它们写代码了,其实仅仅是知道如何调用api而已,离会用还差的远。    熟练使用各种数据结构和算法,数组、哈希、链表、排序树…,一句话要么是时间换空间要么是空间换时间,这里展开可以说一大堆,需要有一定的应用经验,用于解决各种性能或业务上的问题。    熟练使用linux操作系统,必备,没什么好说的 。    熟悉tcp协议,创建连接三次握手和断开连接四次握手的整个过程,不了解的话,无法对高并发网络应用做优化; 熟悉http协议,尤其是http头,我发现好多工作五年以上的都弄不清session和cookie的生命周期以及它们之间的关联。    系统集群、负载均衡、反向代理、动静分离,网站静态化 。    分布式存储系统nfs,fastdfs,tfs,Hadoop了解他们的优缺点,适用场景 。    分布式缓存技术memcached,redis,提高系统性能必备,一句话,把硬盘上的内容放到内存里来提速,顺便提个算法一致性hash 。    工具nginx必备技能超级好用,高性能,基本不会挂掉的服务器,功能多多,解决各种问题。    数据库的设计能力,mysql必备,最基础的数据库工具,免费好用,对它基本的参数优化,慢查询日志分析,主从复制的配置,至少要成为半个mysql dba。其他nosql数据库如mongodb。    还有队列中间件。如消息推送,可以先把消息写入数据库,推送放队列服务器上,由推送服务器去队列获取处理,这样就可以将消息放数据库和队列里后直接给用户反馈,推送过程则由推送服务器和队列服务器完成,好处异步处理、缓解服务器压力,解藕系统。   以上纯粹是常用的技术,还有很多自己慢慢去摸索吧;因为要知道的东西很多,所以要成为一名合格的架构师,必须要有强大的自学能力,没有人会手把手的教给你所有的东西。    想成为架构师不是懂了一大堆技术就可以了,这些是解决问题的基础、是工具,不懂这些怎么去提解决方案呢?这是成为架构师的必要条件。    架构师要针对业务特点、系统的性能要求提出能解决问题成本最低的设计方案才合格,人家一个几百人用户的系统,访问量不大,数据量小,你给人家上集群、上分布式存储、上高端服务器,为了架构而架构,这是最扯淡的,架构师的作用就是第一满足业务需求,第二最低的硬件网络成本和技术维护成本。    架构师还要根据业务发展阶段,提前预见发展到下一个阶段系统架构的解决方案,并且设计当前架构时将架构的升级扩展考虑进去,做到易于升级;否则等系统瓶颈来了,出问题了再去出方案,或现有架构无法扩展直接扔掉重做,或扩展麻烦问题一大堆,这会对企业造成损失。Java架构师学习路线图如:https://yq.aliyun.com/articles/225941?spm=5176.8091938.0.0.qyp0tC

zwt9000 2019-12-02 00:25:32 0 浏览量 回答数 0

回答

请求结构 您可以通过发送HTTP或HTTPS请求调用物联网平台API。 请求结构如下: http://Endpoint/?Action=xx&Parameters 参数 说明 Endpoint 调用云服务的接入地址。物联网平台的接入地址格式:iot.${RegionId}.aliyuncs.com。其中,变量${RegionId}需替换为您的物联网平台服务的地域代码。阿里云地域代码,请参见地域和可用区。 接入地址示例: 华东2(上海):iot.cn-shanghai.aliyuncs.com 新加坡:iot.ap-southeast-1.aliyuncs.com 美国(硅谷):iot.us-west-1.aliyuncs.com 日本(东京):iot.ap-northeast-1.aliyuncs.com 德国(法兰克福):iot.eu-central-1.aliyuncs.com Action 要执行的操作,即云端API接口的名称。例如,调用Pub接口向指定Topic发布消息,Action对应的值就是Pub,即Action=Pub。 Parameters 请求参数。每个参数之间用(&)符号分隔。 请求参数由公共请求参数和API自定义参数组成。公共参数中包含API版本号、身份验证等信息。 下面以调用Pub接口向指定Topic发布消息为例: 说明 本文档示例均使用华东2(上海)地域的接入地址。为了便于阅读,本文档中的示例均做了格式化处理。 https://iot.cn-shanghai.aliyuncs.com/?Action=Pub &Format=XML &Version=2017-04-20 &Signature=Pc5WB8gokVn0xfeu%2FZV%2BiNM1dgI%3D &SignatureMethod=HMAC-SHA1 &SignatureNonce=15215528852396 &SignatureVersion=1.0 &AccessKeyId=... &Timestamp=2017-07-19T12:00:00Z &RegionId=cn-shanghai ... API在线调试 阿里云提供API在线调试工具 OpenAPI Explorer。在OpenAPI Explorer页,您可以快速检索和试验调用API。系统会根据您输入的参数同步生成各语言SDK的Demo代码。各语言SDK Demo显示在页面右侧示例代码页签下供您参考。在调试结果页签下,查看API调用的真实请求URL和JSON格式的返回结果。 物联网平台API API授权 为了确保您的账号安全,建议您使用子账号的身份凭证调用API。如果您使用RAM子账号调用物联网平台API,您需要为该RAM子账号创建、授予相应的授权策略。 为子账号授权调用API,请参见IoT API 授权映射表。

保持可爱mmm 2020-03-27 15:54:39 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档clt = client.AcsClient(properties.accessKeyId,properties.accessKeySecret,properties.regionId)request = PushRequest.PushRequest()#替换成自己的appKeyrequest.set_AppKey(properties.appKey)#推送目标: device:推送给设备; account:推送给指定帐号,tag:推送给自定义标签; all: 推送给全部request.set_Target('all')#根据Target来设定,如Target=device, 则对应的值为 设备id1,设备id2. 多个值使用逗号分隔.(帐号与设备有一次最多100个的限制)request.set_TargetValue('all')#设备类型deviceType 取值范围为:0~3. iOS设备: 0; Android设备: 1; 全部: 3, 这是默认值request.set_DeviceType(1)#0:表示消息(默认为0), 1:表示通知request.set_Type(0)#消息的标题request.set_Title("Hello Open Api!")#消息的内容request.set_Body("Body from ali push open api:Push")#通知的摘要request.set_Summary("Summary from ali push open api:Push")#离线消息是否保存,若保存, 在推送时候,用户即使不在线,下一次上线则会收到#request.set_StoreOffline(False)# iOS配置#iOS应用图标右上角角标request.set_iOSBadge("5")#iOS通知声音request.set_iOSMusic("default")# iOS通知标题(iOS 10+)request.set_iOSTitle("iOS 10 Title")# iOS通知副标题(iOs 10+)request.set_iOSSubtitle("iOS 10 Subtitle")# 使能通知扩展处理(iOS 10+)request.set_iOSMutableContent(True)# 设定通知Category(iOS 10+)request.set_iOSNotificationCategory("test_category")#自定义的kv结构,开发者扩展用 针对iOS设备(iOS 10+ 可以使用关键字attachment来指定富媒体推送通知的资源Url)request.set_iOSExtParameters("{\"attachment\":\"https://xxxx.xxx/notification_pic.png\",\"k2\":\"v2\"}")#推送时设备不在线(既与移动推送的服务端的长连接通道不通),则这条推送会做为通知,通过苹果的APNs通道送达一次(发送通知时,Summary为通知的内容,Message不起作用)。注意:离线消息转通知仅适用于生产环境#request.set_Remind(False)#iOS环境request.set_ApnsEnv("DEV")#android配置#设置该参数后启动小米托管弹窗功能,此处指定通知点击后跳转的Activity(托管弹窗的前提条件:1. 继承小米辅助通道;2. storeOffline设为true)#request.set_XiaomiActivity("_Your_XiaoMi_Activity_")#点击通知后动作,1:打开应用 2: 打开应用Activity 3:打开 url 4 : 无跳转逻辑request.set_AndroidOpenType("3")#Android收到推送后打开对应的url,仅仅当androidOpenType=3有效request.set_AndroidOpenUrl("http://www.baidu.com")#设定android类型设备通知的扩展属性request.set_AndroidExtParameters("{\"k1\":\"android\",\"k2\":\"v2\"}")result = clt.do_action(request)print result

2019-12-01 23:15:25 0 浏览量 回答数 0

问题

消息服务的错误码有哪些?

轩墨 2019-12-01 22:10:37 1218 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret); DefaultAcsClient client = new DefaultAcsClient(profile); final SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH:mm:ss"); final String date = dateFormat.format(new Date()); PushRequest pushRequest = new PushRequest(); // 推送目标 pushRequest.setAppKey(appKey); pushRequest.setTarget("device"); //推送目标: device:推送给设备; account:推送给指定帐号,tag:推送给自定义标签; all: 推送给全部 pushRequest.setTargetValue("_YOUR_DEVICE_IDS_HERE"); //根据Target来设定,如Target=device, 则对应的值为 设备id1,设备id2. 多个值使用逗号分隔.(帐号与设备有一次最多100个的限制) pushRequest.setDeviceType(3); // 设备类型deviceType 取值范围为:0~3. iOS设备: 0; Android设备: 1; 全部: 3, 这是默认值. // 推送配置 pushRequest.setType(1); // 0:表示消息(默认为0), 1:表示通知 pushRequest.setTitle(date); // 消息的标题 pushRequest.setBody("PushRequest body"); // 消息的内容 pushRequest.setSummary("PushRequest summary"); // 通知的摘要 // 推送配置: iOS pushRequest.setiOSBadge("5"); // iOS应用图标右上角角标 pushRequest.setiOSMusic("default"); // iOS通知声音 pushRequest.setiOSExtParameters("{\"k1\":\"ios\",\"k2\":\"v2\"}"); //自定义的kv结构,开发者扩展用 针对iOS设备 pushRequest.setApnsEnv("DEV"); //pushRequest.setRemind(true); // 推送时设备不在线(既与移动推送的服务端的长连接通道不通),则这条推送会做为通知,通过苹果的APNs通道送达一次(发送通知时,Summary为通知的内容,Message不起作用)。注意:离线消息转通知仅适用于生产环境 // 推送配置: Android //设置该参数后启动小米托管弹窗功能,此处指定通知点击后跳转的Activity(托管弹窗的前提条件:1. 继承小米辅助通道;2. storeOffline设为true //pushRequest.setXiaomiActivity("_Your_XiaoMi_Activity_"); pushRequest.setAndroidOpenType("3"); // 点击通知后动作,1:打开应用 2: 打开应用Activity 3:打开 url 4 : 无跳转逻辑 pushRequest.setAndroidOpenUrl("http://www.baidu.com"); // Android收到推送后打开对应的url,仅仅当androidOpenType=3有效 pushRequest.setAndroidExtParameters("{\"k1\":\"android\",\"k2\":\"v2\"}"); // 设定android类型设备通知的扩展属性 // 推送控制 //final Date pushDate = new Date(System.currentTimeMillis() + 30 * 1000); // 30秒之间的时间点, 也可以设置成你指定固定时间 //final String pushTime = ParameterHelper.getISO8601Time(pushDate); // pushRequest.setPushTime(pushTime); // 延后推送。可选,如果不设置表示立即推送 //pushRequest.setStoreOffline(false); // 离线消息是否保存,若保存, 在推送时候,用户即使不在线,下一次上线则会收到 //final String expireTime = ParameterHelper.getISO8601Time(new Date(System.currentTimeMillis() + 12 * 3600 * 1000)); // 12小时后消息失效, 不会再发送 //pushRequest.setExpireTime(expireTime); //pushRequest.setBatchNumber("100010"); // 批次编号,用于活动效果统计. 设置成业务可以记录的字符串 PushResponse pushResponse = client.getAcsResponse(pushRequest); System.out.printf("RequestId: %s, ResponseId: %s\n", pushResponse.getRequestId(), pushResponse.getResponseId());

2019-12-01 23:11:52 0 浏览量 回答数 0

问题

如何操作BatchGetRow

云栖大讲堂 2019-12-01 20:59:49 1244 浏览量 回答数 0

回答

AccessDenied The OwnerId that your Access Key Idassociated to is forbidden for this operation. 403 检查AccessKeyId和AccessKeySecret等配置是否正确 InvalidAccessKeyId The AccessKey Id you provided is not exist. 403 检查AccessKeyId是否正确 InternalError Interal error. 500 系统错误,请联系MNS技术支持 InvalidAuthorizationHeader The Authorization header format is invalid. 400 签名格式不正确,请参见请求签名机制 InvalidDateHeader The Date header format is invalid. 400 Date字段不合法,请参见公共参数 InvalidArgument The XML you provided did not validate against our published schema, cause by Element① Element. 400 XML结构不正确,请参见对应API文档 InvalidArgument The value of Element②should between Low③ and High④ seconds/bytes. 400 参数值非法,请根据提示调整 InvalidDegist The Content-MD5 you specified is invalid. 400 请求Header中Content-MD5不正确 InvalidRequestURL Http request URL format invalid. 400 请求的URL不正确,请参见对应API文档 InvalidQueryString Http request URL contains invalid querystring item “Element⑤”. 400 请求的URL不正确,请参见对应API文档 MalformedXML The XML you provided was not well-formed. 400 XML结构异常,请参见对应API文档 MissingAuthorizationHeader Authorization header is required. 400 请求Header缺少字段,请参见公共参数 MissingDateHeader Date header is required. 400 请求Header缺少字段,请参见公共参数 MissingReceiptHandle ReceiptHandle is required. 400 请求缺少参数,请参见对应API文档 MissingVisibilityTimeout VisibilityTimeout is required. 400 请求缺少参数,请参见对应API文档 MessageNotExist Message not exist. 404 队列中没有可见消息 QueueAlreadyExist The queue you want to create is already exist. 409 同名队列已存在,且请求属性与原有队列属性不同 InvalidQueueName The queue name you provided is invalid. QueueName should start with alpha and contain only alpha, digit or - . 400 队列名称不合法,请参见对应API文档 QueueNameLengthError Queue name length should between 1 and 255. 400 队列名称不合法,请参见对应API文档 QueueNotExist The queue name you provided is not exist. 404 队列不存在,请先创建队列 ReceiptHandleError The receipt handle you provide is not valid. 400 请求参数不合法,请参见对应API文档 SignatureDoesNotMatch The request signature we calculated does not match the signature you provided. Check your key and signing method. 403 请求签名异常,请参见请求签名机制 TimeExpired The http request you sent is expired. 408 请求时间与MNS服务器时间相差超过15分钟,建议检查本地时间 QpsLimitExceeded The qps limit of the queue is exceeded ⑥ 400 队列每秒的请求次数超过QPS限制,如果需要提高QPS限制,请联系MNS技术支持 TopicAlreadyExist The topic you want to create already exists. 409 同名主题已存在,且请求属性与原有主题属性不同 TopicNameInvalid The topic name you provided is invalid. TopicName should start with alpha or digit and contain only alpha, digit or -. 400 主题名称不合法,请参见对应API文档 TopicNameLengthError Topic name length is out of range, should be between 1 and 255. 400 主题名称不合法,请参见对应API文档 TopicNotExist The Topic you provided does not exist. 404 主题不存在,请先创建主题 SubscriptionNameInvalid The subscription name you provided is invalid. SubscriptionName should start with alpha or digit and contain only alpha, digit or -. 400 订阅名称不合法,请参见对应API文档 SubscriptionNameLengthError Subscription name length is out of range, should be between 1 and 255. 400 订阅名称不合法,请参见对应API文档 SubscriptionNotExist The subscription you provided does not exist. 404 订阅不存在,请先创建订阅 SubscriptionAlreadyExist The subscription you want to create already exists. 409 同名订阅已经存在,且请求属性与原有订阅属性不同 EndpointInvalid The format of endpoint you provided is invalid. 400 Endpoint参数不合法,请参见Endpoint InvalidArgument The length of message should not be larger than MaximumMessageSize. 400 消息体过长,请参见对应API文档 说明 ①②表示在请求内容的XML元素名称 ③表示在MNS中某个参数的下限值 ④表示在MNS中某个参数的上限值 ⑤表示在URL请求中QueryString的元素 ⑥当前MNS单个queue的QPS上限是5k

保持可爱mmm 2020-03-29 00:02:09 0 浏览量 回答数 0

回答

错误代码简介 消费端通过 CSB 调用服务时,整个链路上可以分成三个阶段: 服务消费端应用以消费端协议访问 CSB。 CSB 处理转发服务调用请求。 CSB 以提供端协议访问服务提供端应用。 这三个阶段都可能出错,服务消费端收到错误信息时要能区别是在哪个阶段发生了什么错误,需要考虑如何通过消费端协议定义的错误信息结构来体现。消费端协议定义的错误信息结构多种多样,也可能有各种限制,但是通常都至少会提供错误码和错误描述,而且错误码应该都有保留或者未占用的、代表“其它错误”的编码(下称:逃逸代码 Escape Code)。基于这个前提,可以定义如下约定: 阶段1发生的错误不用做任何处理。 阶段2及之后发生的错误,约定使用消费端协议的某个 Escape Code,具体CSB错误码和描述以固定格式体现在消费端错误描述内,如[CSB Error Code] CSB Error Message。 阶段3发生的错误,同上处理,但是 CSB Error Code 也提供 Escape Code 表示这是一个阶段 3 错误,且 CSB Error Message 的格式定义为[提供端协议错误码] 提供端协议错误信息。 说明 CSB 需要了解提供端协议的错误码中哪些表示正常访问,以免将成功的访问当做错误处理。 CSB 错误码列表 其中 800 为 CSB Escape Code 。 错误代码 错误描述信息 说明 200 SUCCESS 请求处理成功 500 platform error 平台处理错误 501 access permission deny 没有权限访问 502 signature verification failed 验签失败 503 service not registed 服务没有注册 504 api name not found 该服务没有找到 505 access key not found Access Key 没有在参数里找到 506 signature not found 签名没有在参数里面找到 507 required parameter is missing 参数丢失 508 need to access security channel 需要能访问安全通道 509 timestamp not found 时间戳在参数里面没有找到 510 time expired 访问过期 511 invoke timeout 调用 HSF 服务超时 512 write channel error 转发 HSF 协议时,连接通道出错 513 connection has broken 连接已经断开 514 hsf address not found 调用时没有找到 HSF 服务地址 515 hsf process error 调用 HSF 出错 516 hoh process error 级联调用 HSF 出错 517 json2hsf process error HTTP 调用 HSF 失败 518 service metadata is null 发布的 HSF 服务信息为空 519 access permission deny by black list 访问被黑名单拒绝 520 can not found service metadata 调用是没有从缓存中找到 HSF 服务的元信息 521 access permission deny, ip is not in white list 访问者的 IP 没有加入白名单 522 this invoke protocol not open 该服务没有开放成此协议 523 access permission deny due to strict accesskey and ip white list 此凭证设置了白名单,需要访问者 IP 加入到白名单里 524 exceed access limition, try later 触发限流 800 service server error 服务调用出错 801 connect to service server error 连接不到服务提供者 802 serivce has offline from server 此服务已经下线 803 serivce has been stopped 服务已经在 CSB 上关闭了 99 hsf escap code HSF 逃逸错误代码 900 Unknown code 未知错误代码 1001 bad soap request SOAP 消息不正确 1002 bad response 返回结果不正确 1003 bad hsf subscribe info 错误的 HSF 订阅信息 1004 hsf invoke exception HSF 调用异常 1005 bad input soap parsing 输入 SOAP 消息解析失败 1006 bad output soap parsing 输出的 SOAP 消息解析失败 1007 bad invoke restful provider HTTP 服务 Provider 异常 1008 json2ws process error, bad input restufl/json request HTTP 调用 WS 失败,HTTP 请求不正确 1009 json2ws process error 调用 WS 服务失败 10001 process response result data filter failed 结果过滤处理结果失败 HSF 错误代码 错误代码 错误描述信息 说明 20 OK HSF 调用成功 30 client timeout 调用端超时 31 server timeout 服务端超时 40 bad request 请求不合法 50 bad response 返回结果不合法 60 service not found 服务没有找到 70 service error 服务错误 79 connection has broken 连接已经断开 80 server error 服务提供端错误 81 Thread pool is busy 线程池繁忙 82 Communication error 通信异常 84 request is limited 请求被限流 88 server will close soon 服务很快就要关闭 90 client error 消费端错误 91 Unknown error 未知错误 消费端协议 Escape Code 列表 消费端协议 Escape Code HTTP类 500 HSF 99 示例 消费端应用以HSF协议通过CSB访问一个后端HSF服务,三个阶段的错误示例如下: 第一阶段错误 CSB 的 HSF 协议处理器发现消费端发出的 HSF 请求格式不正确,以 HSF 错误 40 bad request 直接回复消费端。 第二阶段错误 CSB 在处理消费端发出的 HSF 请求时,发现所访问的 API 并不存在,以 HSF 错误 99 [504]所访问的服务API(taobao.unknown)在实例(instance0733)上不存在 回复消费端。其中 99 为消费端协议 HSF 的 Escape Code。 第三阶段错误 CSB 处理消费端发出的 HSF 请求,在访问后端服务提供者时,HSF 服务框架报错 60 service not found,CSB 以HSF 错误 99 [800][60] service not found 回复消费端。其中 99 为消费端协议的 Escape Code,800 为 CSB 的 Escape Code。 第三阶段错误 CSB 处理消费端发出的 HSF 请求,在访问后端服务提供者时,HSF 服务提供应用出错,因为 HSF 框架不支持返回具体应用逻辑错误信息,仅仅报错为 80 server error,CSB 以 HSF错误 99 [800][80] server error 回复消费端。这里具体的应用错误只能在应用服务提供端看到,如果后端是其它比较开放的协议框架(用 X 代替),具体的应用错误信息可能可以报给 CSB,这样 CSB 才能返回更具体的错误信息 99 [800][X-Code] X-Message。

保持可爱mmm 2020-03-28 17:48:50 0 浏览量 回答数 0

问题

如何操作BatchWriteRow

云栖大讲堂 2019-12-01 20:59:52 1130 浏览量 回答数 0

回答

一:C语言 嵌入式Linux工程师的学习需要具备一定的C语言基础,C语言是嵌入式领域最重要也是最主要的编程语言,通过大量编程实例重点理解C语言的基础编程以及高级编程知识。包括:基本数据类型、数组、指针、结构体、链表、文件操作、队列、栈等。 二:Linux基础 Linux操作系统的概念、安装方法,详细了解Linux下的目录结构、基本命令、编辑器VI ,编译器GCC,调试器GDB和 Make 项目管理工具, Shell Makefile脚本编写等知识,嵌入式开发环境的搭建。 三:Linux系统编程 重点学习标准I/O库,Linux多任务编程中的多进程和多线程,以及进程间通信(pipe、FIFO、消息队列、共享内存、signal、信号量等),同步与互斥对共享资源访问控制等重要知识,主要提升对Linux应用开发的理解和代码调试的能力。 四:Linux网络编程 计算机网络在嵌入式Linux系统应用开发过程中使用非常广泛,通过Linux网络发展、TCP/IP协议、socket编程、TCP网络编程、UDP网络编程、Web编程开发等方面入手,全面了解Linux网络应用程序开发。重点学习网络编程相关API,熟练掌握TCP协议服务器的编程方法和并发服务器的实现,了解HTTP协议及其实现方法,熟悉UDP广播、多播的原理及编程方法,掌握混合C/S架构网络通信系统的设计,熟悉HTML,Javascript等Web编程技术及实现方法。 五:数据结构与算法 数据结构及算法在嵌入式底层驱动、通信协议、及各种引擎开发中会得到大量应用,对其掌握的好坏直接影响程序的效率、简洁及健壮性。此阶段的学习要重点理解数据结构与算法的基础内容,包括顺序表、链表、队列、栈、树、图、哈希表、各种查找排序算法等应用及其C语言实现过程。 六:C++ 、QT C++是Linux应用开发主要语言之一,本阶段重点掌握面向对象编程的基本思想以及C++的重要内容。图形界面编程是嵌入式开发中非常重要的一个环节。由于QT具有跨平台、面向对象、丰富API、支持2D/3D渲染、支持XML、多国语等强大功能,在嵌入式领域的GUI开发中得到了广范的应用,在本阶段通过基于QT图形库的学习使学员可以熟练编写GUI程序,并移植QT应用程序到Cortex-A8平台。包括IDE使用、QT部件及布局管理器、信息与槽机制的应用、鼠标、键盘及绘图事件处理及文件处理的应用。 七:Cortex A8 、Linux 平台开发 通过基于ARM Cortex-A8处理s5pv210了解芯片手册的基本阅读技巧,掌握s5pv210系统资源、时钟控制器、电源管理、异常中断控制器、nand flash控制器等模块,为底层平台搭建做好准备。Linux平台包括内核裁减、内核移植、交叉编译、GNU工具使用、内核调试、Bootloader介绍、制作与原理分析、根文件系统制作以及向内核中添加自己的模块,并在s5pv210实验平台上运行自己制作的Linux系统,集成部署Linux系统整个流程。同时了解Android操作系统开发流程。Android系统是基于Linux平台的开源操作系统,该平台由操作系统、中间件、用户界面和应用软件组成,是首个为移动终端打造的真正开放和完整的移动软件,目前它的应用不再局限于移动终端,还包括数据电视、机顶盒、PDA等消费类电子产品。 八:驱动开发 驱动程序设计是嵌入式Linux开发工作中重要的一部分,也是比较困难的一部分。本阶段的学习要熟悉Linux的内核机制、驱动程序与用户级应用程序的接口,掌握系统对设备的并发操作。熟悉所开发硬件的工作原理,具备ARM硬件接口的基础知识,熟悉ARM Cortex-A8处理器s5pv210各资源、掌握Linux设备驱动原理框架,熟悉工程中常见Linux高级字符设备、块设备、网络设备、USB设备等驱动开发,在工作中能独立胜任底层驱动开发。 以上就是列出的关于一名合格嵌入式Linux开发工程师所必学的理论知识,其实,作为一个嵌入式开发人员,专业知识和项目经验同样重要,所以在我们的理论学习中也要有一定的项目实践,锻炼自己的项目开发能力。

知与谁同 2019-12-02 01:22:27 0 浏览量 回答数 0

问题

如何操作DeleteRow

云栖大讲堂 2019-12-01 20:59:43 1054 浏览量 回答数 0

问题

小白学习IOT 第六课 华东2节点mqtt上报

洵云 2019-12-01 20:57:57 2796 浏览量 回答数 3

回答

服务地址 消息队列 RocketMQ 版 的 API 接入地址为 ons.[regionId].aliyuncs.com。其中,[regionId] 为消息队列 RocketMQ 版实例所在地域的 ID。 消息队列 RocketMQ 版 支持的 OpenAPI 地域,以及对应的 regionId 和 domain 如下表所示。 地域名称 regionId domain 公网 mq-internet-access ons.mq-internet-access.aliyuncs.com 华东1(杭州) cn-hangzhou ons.cn-hangzhou.aliyuncs.com 华东2(上海) cn-shanghai ons.cn-shanghai.aliyuncs.com 华北1(青岛) cn-qingdao ons.cn-qingdao.aliyuncs.com 华北2(北京) cn-beijing ons.cn-beijing.aliyuncs.com 华北3(张家口) cn-zhangjiakou ons.cn-zhangjiakou.aliyuncs.com 华北5(呼和浩特) cn-huhehaote ons.cn-huhehaote.aliyuncs.com 华南1(深圳) cn-shenzhen ons.cn-shenzhen.aliyuncs.com 西南1(成都) cn-chengdu ons.cn-chengdu.aliyuncs.com 中国(香港) cn-hongkong ons.cn-hongkong.aliyuncs.com 新加坡(新加坡) ap-southeast-1 ons.ap-southeast-1.aliyuncs.com 澳大利亚(悉尼) ap-southeast-2 ons.ap-southeast-2.aliyuncs.com 马来西亚(吉隆坡) ap-southeast-3 ons.ap-southeast-3.aliyuncs.com 印度尼西亚(雅加达) ap-southeast-5 ons.ap-southeast-5.aliyuncs.com 日本(东京) ap-northeast-1 ons.ap-northeast-1.aliyuncs.com 德国(法兰克福) eu-central-1 ons.eu-central-1.aliyuncs.com 英国(伦敦) eu-west-1 ons.eu-west-1.aliyuncs.com 美国(弗吉尼亚) us-east-1 ons.us-east-1.aliyuncs.com 美国(硅谷) us-west-1 ons.us-west-1.aliyuncs.com 印度(孟买) ap-south-1 ons.ap-south-1.aliyuncs.com 阿联酋(迪拜) me-east-1 ons.me-east-1.aliyuncs.com 华东1 金融云 cn-hangzhou-finance ons.cn-hangzhou-finance.aliyuncs.com 华南1 金融云 cn-shenzhen-finance-1 ons.cn-shenzhen-finance-1.aliyuncs.com 华东2 金融云 cn-shanghai-finance-1 ons.cn-shanghai-finance-1.aliyuncs.com 华北2 阿里政务云1 cn-north-2-gov-1 ons.cn-north-2-gov-1.aliyuncs.com 通信协议 支持通过 HTTP 或 HTTPS 协议进行请求通信。为了获得更高的安全性,推荐您使用 HTTPS 协议发送请求。 请求语法 消息队列 RocketMQ 版提供 RESTful API 供您使用,其请求结构如下。 HTTPMethod /resource_URI_parameters RequestHeader RequestBody 其中: HTTPMethod :请求使用的方法。 resource_URI_parameters:请求要调用的资源标示符,如/cluster。 RquestHeader:请求头信息,通常包含 API 的版本、Host、Authorization 等信息。更多信息,请参见公共参数。 请求参数由公共请求头和 API 自定义参数组成。公共请求头中包含 API 版本号、身份验证等信息。 RequestBody:请求参数。 示例 http://xxxxx&<公共请求参数> { "AppName","app1", "AppDescription","This is an application", "CategoryName","Java", } 请求编码 请求及返回结果都使用 UTF-8 字符集进行编码。

保持可爱mmm 2020-03-28 20:51:47 0 浏览量 回答数 0

回答

在这篇博客里,我们最终希望构建一个Websocket集群来实现与客户端的实时通信,比如聊天室。我们当然可以通过简单的demo构建一个Websocket服务器并让所有客户端连接这台机器,但当这个聊天室的交互量非常庞大呢?比如斗鱼的直播弹幕,我去斗鱼看了下请求,从命名也可以看到其建立了一个ws连接,叫做danmuproxy.douyu.com,如下图。 那么问题来了,如果我只使用一台服务器,如何去支持可能有10万人同时加入的这个聊天室呢?显然我们需要一个解决方案,比如将流量负载均衡到不同的服务器上并提供一种通信机制让各个服务器能进行消息同步(不然用户A连上服务器A,用户B脸上服务器B,它们发消息的时候对方都没法收到)。其实从上图的名字来看就知道斗鱼连接的这个danmuproxy.douyu.com中的proxy就大致能推断出他们也是把流量做了一个分发。Websocket集群由于和普通的HTTP服务器的负载均衡不同,上一节也说到了这些Websocket服务器需要共享信息(当然,需要做Session共享的服务器也一样)。这意味着客户端与Websocket服务器的交互是有状态(stateful)的,我们需要把每个客户端的连接数据保存在内存中。而当我们要实现分布式的时候,我们则需要在各个机器上共享这些信息,所以我们需要一个Publish/Subscribe broker(其实broker以前上学讲软件设计体系结构的时候学过,但当时太萌新了没理解)。接下来举个例子。假设我们现在使用Redis作为我们的解决方案,然后我们现在有三台Websocket服务器WS1,WS2和WS3。然后每台服务器上连了三个用户。WS1机器上的其中一个用户发送了某个消息到聊天室,在你的Websocket服务器的逻辑中,你首先会把这个消息存入数据库做一个持久化(比如做历史消息),然后将这个消息根据channelId之类的东西推送至这个聊天室的channel(Websocket的channel的实现会在下一篇中详细讲),我们假设这个channelId叫“The☆World”。现在你把数据安全的存入了DB里,并且你发布了一个事件给你的Pub/Sub broker(Redis channel)来通知其他对此感兴趣的部分(其他Websocket或者API服务器等)。所以之前的另外两个服务器WS2和WS3因为对这部分感兴趣所以他们也通过脚本监听了这一个Redis channel,它们就会得到通知,然后每个服务器就会对DB请求query获取更新然后emit消息给Websocket上对应channel。这就是你们可以看到的,使用Pub/Sub brooker来实现了一个横向扩展的Websocket集群。从这里也可以看到集群具有的有点,高扩展性以及高可用性。实现这次实现使用了我的一台高配阿里云国内服务器和一台比较low的阿里云9元学生服务器以及高配服务器上的redis。Nginx负载均衡首先配置Nginx做负载均衡,下图是我的配置,只是个Demo没做wss相关的。服务器端实现代码都在github上。Demo的代码也很短const WebSocket = require('ws');const publicIp = require('public-ip');const uuidv1 = require('uuid/v1');const redis = require("redis");const config = require('./config'); const sub = redis.createClient(config.DB.REDIS_PORT, config.DB.REDIS_HOST);const pub = redis.createClient(config.DB.REDIS_PORT, config.DB.REDIS_HOST); if (config.DB.REDIS_PASSWORD) { sub.auth(config.DB.REDIS_PASSWORD); pub.auth(config.DB.REDIS_PASSWORD); } const wss = new WebSocket.Server({ port: 2333 }); const ip2name = { '47.94.233.234': '梁王的高配据点', '115.28.68.89': '梁王的9块服务器',} let sockets = {}; wss.on('connection', function connection(ws) { const uuid = uuidv1(); ws.uuid = uuid; sockets[uuid] = ws; ws.on('message', function incoming(message) { // publish消息给其他服务器 pub.publish('channel', `${ws.uuid}>${message}`); console.log(`publish to channel: ${ws.uuid}>${message}`) // 向本服务器的socket广播 wss.clients.forEach(function each(client) { if (client !== ws && client.readyState === WebSocket.OPEN) { client.send(`来自${ws.from || '???'}的用户${ws.uuid}发送了: ${message}`); } }); }); publicIp.v4().then(ip => { console.log(ip); ws.from = ip2name[ip] ? ip2name[ip] : '未知'; ws.send(`你连接的服务器为${ws.from}`); });}); // 监听其他服务器发送的消息sub.on('message', function(channel, message) { console.log(channel ${channel}, ${message}) if (channel == 'channel') { var messageArr = message.split('>'); var uuid = messageArr[0] var wsFrom = sockets[uuid]; var content = messageArr[1]; // 如果socket是非本服务器的 if(!wsFrom) { wss.clients.forEach(function each(client) { client.send(`来自其他服务器的用户${uuid}发送了: ${content}`); }); } } }); sub.subscribe('channel');复制代码效果可以用以下代码在控制台中尝试,服务器后期可能会关。var socket = new WebSocket('ws://websocket-demo.lwio.me'); // Listen for messagessocket.addEventListener('message', function (event) { console.log('收到了', event.data); }); // socket.send('keke')复制代码

hbase小能手 2019-12-02 02:02:15 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 SQL审核 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 人工智能 阿里云云栖号 云栖号案例 云栖号直播