RocketMQ系列之特性以及常见api的使用

RocketMQ系列之特性以及常见api的使用,第1张

消息的发布是指某个生产者向某个topic发送消息;消息的订阅是指某个消费者关注了某个topic中带有某些tag的消息,进而从该topic消费数据。

消息发送后进入同步等待状态,可以保证消息投递一定到达。可靠的同步消息传输可用于重要的通知消息,SMS通知,SMS营销系统等广泛的场景中。

异步传输通常用于响应时间敏感的业务场景。想要快速发送消息,又不想丢失的时候可以使用异步消息。

只发送消息,不等待服务器响应,只发送请求不等待应答。此方式发送消息的过程耗时非常短,一般在微秒级别。单向消息适用于需要适度可靠性的场景,例如日志收集。

可以多条消息打包一起发送,减少网络传输次数提高效率。
producersend(Collection c) 方法可以接收一个集合实现批量发送。

批量发送消息的复杂度只会在发送大批量并且你可能不确定它是否超过了大小限制(1MiB)时增加。在这种情况下,你最好将列表拆分:

消息消费模式由消费者来决定,可以由消费者设置MessageModel来决定消息消费模式。
消息模式默认为集群消费模式。
RocketMQ的消费者可以根据Tag进行消息过滤,也支持自定义属性过滤。RocketMQ支持两种消息过滤方式,一种是在Broker端进行过滤,另一种是在Consumer端进行过滤。

在Broker中,按照Consumer的要求做过滤,优点是减少了对于Consumer无用消息的网络传输。
缺点是增加了Broker的负担,实现相对复杂。

这种过滤方式可由应用完全自定义实现,但是缺点是很多无用的消息要传输到Consumer端。

在大多数情况下,TAG是一个简单而有用的设计,其可以用来选择你想要的消息。例如:

消费者将接收包含TAGA或TAGB或TAGC的消息。但是限制是一个消息只能有一个标签,这对于复杂的场景可能不起作用。在这种情况下,可以使用SQL表达式筛选消息。

SQL特性可以通过发送消息时的属性来进行计算。在RocketMQ定义的语法下,可以实现一些简单的逻辑。下面是一个例子:

RocketMQ只定义了一些基本语法来支持这个特性。你也可以很容易地扩展它。

在 brokerconf 中添加配置:

启动 broker 加载指定配置文件:

随后在集群配置中可以看到:

发送消息时,你可以通过putUserProperty来设置消息的属性:

可以通过MessageSelectorbySql来筛选消息

WebSocket的出现是基于Web应用的实时性需要而产生的。这种实时的Web应用大家应该不陌生,在生活中都应该用到过,比如新浪微博的评论、私信的通知,腾讯的WebQQ等。让我们来回顾下实时 Web 应用的窘境吧。
在WebSocket出现之前,一般通过两种方式来实现Web实时用:轮询机制和流技术;其中轮询有不同的轮询,还有一种叫Comet的长轮询。
轮询:这是最早的一种实现实时 Web 应用的方案。客户端以一定的时间间隔向服务端发出请求,以频繁请求的方式来保持客户端和服务器端的同步。这种同步方案的缺点是,当客户端以固定频率向服务 器发起请求的时候,服务器端的数据可能并没有更新,这样会带来很多无谓的网络传输,所以这是一种非常低效的实时方案。
长轮询:是对定时轮询的改进和提高,目地是为了降低无效的网络传输。当服务器端没有数据更新的时候,连接会保持一段时间周期直到数据或状态改变或者 时间过期,通过这种机制来减少无效的客户端和服务器间的交互。当然,如果服务端的数据变更非常频繁的话,这种机制和定时轮询比较起来没有本质上的性能的提 高。
流:常就是在客户端的页面使用一个隐藏的窗口向服务端发出一个长连接的请求。服务器端接到这个请求后作出回应并不断更新连接状态以保证客户端和服务 器端的连接不过期。通过这种机制可以将服务器端的信息源源不断地推向客户端。这种机制在用户体验上有一点问题,需要针对不同的浏览器设计不同的方案来改进 用户体验,同时这种机制在并发比较大的情况下,对服务器端的资源是一个极大的考验。
上述方式其实并不是真正的实时技术,只是使用了一种技巧来实现的模拟实时。在每次客户端和服务器端交互的时候都是一次 >

要在Android应用中实现聊天功能,您需要按照以下步骤进行 *** 作:

设计用户界面:设计聊天界面,包括消息列表、输入框、发送按钮等组件。

建立服务器:在云服务商或自己的服务器上建立一个服务器,用于存储和转发消息。您可以选择使用现有的聊天服务器,如Firebase Realtime Database、Google Cloud Messaging、XMPP等,也可以自己编写服务器端代码。

登录和注册:在应用中实现用户登录和注册功能,以便用户可以使用应用。

建立Socket连接:使用Socket API建立与服务器的Socket连接。您可以使用Java中的Socket或Android中的Socket类来建立连接。

发送消息:在应用中实现发送消息的功能。当用户在应用中输入一条消息并点击发送按钮时,应用将该消息发送到服务器。

接收消息:使用Socket API监听服务器发送的消息。当服务器有新消息时,应用将其接收并显示在消息列表中。

处理消息:在应用中处理接收到的消息。当应用接收到一条消息时,它需要将消息保存到本地数据库中,并更新消息列表。

实现通知:当应用在后台运行时,您需要使用通知来通知用户有新消息到达。您可以使用Android中的通知API来实现通知功能。

实现其他功能:您可能还需要实现其他功能,如消息撤回、表情符号、和文件发送等。

需要注意的是,聊天应用中的数据传输需要使用安全的方式进行,以确保用户数据不被窃取。您可以使用SSL或TLS等安全协议来保护数据传输。

客户端使用的通信协议和API服务器使用的通信协议不一致,可以通过API Gateway将客户端通信协议转换为API服务器所使用的协议,以满足客户端的访问需求,通常可以看到的转换路径是>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13423588.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-02
下一篇 2023-08-02

发表评论

登录后才能评论

评论列表(0条)

保存