当前位置: 首页 > news >正文

蛋糕网站内容规划免费开网站系统

蛋糕网站内容规划,免费开网站系统,搜索引擎营销简称seo,惊艳的网站设计消息队列:一种基于异步通信的解耦机制,用于在应用程序或系统组件之间传递消息和数据 消息队列相关概念: 生产者(Producer):生成并发送消息到消息队列中的应用程序或系统组件。 消费者(Consumer&…

消息队列:一种基于异步通信的解耦机制,用于在应用程序或系统组件之间传递消息和数据

消息队列相关概念:

生产者(Producer):生成并发送消息到消息队列中的应用程序或系统组件。

消费者(Consumer):从消息队列中接收和处理消息的应用程序或系统组件。

主题(Topic):消息队列中用于分类和分组消息的逻辑概念,生产者将消息发送到指定的主题,而消费者可以订阅特定的主题以接收相应的消息。

队列(Queue):消息队列中存储消息的容器,遵循先进先出(FIFO)的原则。

发布-订阅模式(Publish-Subscribe Pattern):一种消息分发模式,生产者将消息发送到一个或多个主题,而消费者通过订阅感兴趣的主题来接收相应的消息。

点对点模式(Point-to-Point Pattern):一种消息传递模式,生产者将消息发送到特定的队列中,而消费者从队列中接收并处理消息。

消息序列化(Message Serialization):将消息从应用程序的数据结构转换为可以在消息队列中传输和存储的格式,通常使用如JSON、XML 或二进制等格式。

消息持久化(Message Persistence):将消息保存到持久化存储中,以确保即使在消息队列或应用程序重启之后也不会丢失

在这里插入图片描述

安装kafka-go

go get github.com/segmentio/kafka-go

简单示例

package mainimport ("context""fmt""log""sync""time""github.com/segmentio/kafka-go"
)// writeByConn 基于Conn发送消息
func writeByConn(wg *sync.WaitGroup) {defer wg.Done()topic := "my-topic"partition := 0// 连接至Kafka集群的Leader节点conn, err := kafka.DialLeader(context.Background(), "tcp", "localhost:9092", topic, partition)if err != nil {log.Fatal("failed to dial leader:", err)}// 设置发送消息的超时时间conn.SetWriteDeadline(time.Now().Add(10 * time.Second))// 发送消息_, err = conn.WriteMessages(kafka.Message{Value: []byte("one!")},kafka.Message{Value: []byte("two!")},kafka.Message{Value: []byte("three!")},)if err != nil {log.Fatal("failed to write messages:", err)}// 关闭连接if err := conn.Close(); err != nil {log.Fatal("failed to close writer:", err)}
}// readByConn 连接至kafka后接收消息
func readByConn(wg *sync.WaitGroup) {defer wg.Done()// 指定要连接的topic和partitiontopic := "my-topic"partition := 0// 连接至Kafka的leader节点conn, err := kafka.DialLeader(context.Background(), "tcp", "localhost:9092", topic, partition)if err != nil {log.Fatal("failed to dial leader:", err)}// 设置读取超时时间conn.SetReadDeadline(time.Now().Add(10 * time.Second))// 读取一批消息,得到的batch是一系列消息的迭代器batch := conn.ReadBatch(10e3, 1e6) // fetch 10KB min, 1MB max// 遍历读取消息b := make([]byte, 10e3) // 10KB max per messagefor {n, err := batch.Read(b)if err != nil {break}fmt.Println(string(b[:n]))}// 关闭batchif err := batch.Close(); err != nil {log.Fatal("failed to close batch:", err)}// 关闭连接if err := conn.Close(); err != nil {log.Fatal("failed to close connection:", err)}
}func main() {var wg sync.WaitGroupwg.Add(2)go writeByConn(&wg)go readByConn(&wg)wg.Wait()
}

运行结果

one!
two!
three!
one!
two!
three!
one!
two!
three!
one!
two!
three!
one!
two!
three!
2023/08/25 10:14:10 failed to close batch:[7] Request Timed Out: the request exceeded the user-specified time limit in the request

可以看到,利用两个goroutine,成功在一个文件里实现了生产者写入消息,消费者消费消息并打印出来

http://www.yayakq.cn/news/988320/

相关文章:

  • 网站建设规划书总结怎么写新浪云 wordpress 主题
  • 网站开发的布局划分织梦网站打开空白
  • 沂南网站建设做谷歌外贸较好网站
  • 在线网站制作系统哪个平台可以免费发广告
  • 有哪些做拎包入住的网站网站设计哪家口碑好
  • 贵州省建设厅审图网站人才网站 建设好 窗口
  • 在成都如何找到做网站的公司wordpress有什么好玩的插件
  • 做彩票网站合法吗免费建自己域名的网站吗
  • 网站提升权重搜索引擎营销的基本过程
  • 创建网站深圳网站关键词排名
  • 网站建设 长沙百姓网wordpress统计代码
  • 建设部网站 绿色建筑评价表企业门户网站的建设方法
  • wordpress 视频站模板下载南昌做网站的流程
  • 做网站一般多少东莞网页设计哪家设计网站好?
  • 简单asp网站源码三只松鼠网站怎样做
  • 全平台开发网站及app深圳龙华区是富人区吗
  • php+mysql 网站建设云南网站排名
  • hexo建设网站购物平台官网
  • linux做网站方便吗企业服务平台公众号
  • 域名还在备案可以做网站吗wordpress注册失败
  • 文章网建站男女性直接做的视频网站
  • 网站制作价格推 荐网站建设的空间是什么
  • 衡水网站制作报价东莞网络营销外包有哪些
  • 会python做网站腾讯公众号小程序
  • 西安建设网站首页上海比较好的公司排名
  • 做网站怎样找如何创立自己的网址
  • 怎样用盒子做汽车视频网站电商网站 建社区
  • 厦门网络公司网站开发计算机网络技术就业方向工资
  • 个人网站的网页安徽网站建设方案优化
  • 如何做资讯网站网站子站怎么建设