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

php项目开发案例源码seo网站优化方案

php项目开发案例源码,seo网站优化方案,福建建设职业管理中心网站,泰安做网站建设的公司哪家好本人理解,顺序消息如果不分消息组,那么会影响并行处理速度,所以尽量消息组分的散一些 首先上要求,官方文档如下: 总结: 1.必须同一个消息组,消息组和消费组不是一个概念,不要混 2.必…

本人理解,顺序消息如果不分消息组,那么会影响并行处理速度,所以尽量消息组分的散一些
首先上要求,官方文档如下:
在这里插入图片描述
总结:
1.必须同一个消息组,消息组和消费组不是一个概念,不要混
2.必须单一生产者,也就是说线上生产只能开一个 pod,感觉局限有点高,无法多 pod 接入
3.必须串行发送,这个点也不太好,限制过高
以上三点
在我的案例中(企业微信回调消息)
那么只能开一个接口服务Pod 来接收微信回调,如果挂了,那完蛋,开多个 pod的话,那只有把请求放队列,通过队列pop进行消费再生产消息到 mq,这样同时也解决了第三点的串行发送。

生产的时候如何确定是顺序消息,只需要生产消息的时候给设定一个消息组

msg := &rmq_client.Message{
Topic: Topic,Body:  []byte("this is a message : " + strconv.Itoa(i)),
}
// set keys and tag
msg.SetKeys("a", "b")
msg.SetTag("ab")
// 这里设置消息组
msg.SetMessageGroup("fifo")

分组分的越细越好

提高消费速度

当拿到消息后,根据消息分组来进行并发处理,每个分组内进行串行处理,关键代码如下


func (m *RocketMq) ConsumerOrderly(funcMap map[string]func([]byte) error) {var err errorm.consumerOnce.Do(func() {Log().Info("##############pro consume orderly start#############", m.MqConfig)errTmp := m.proSimConsumer.Start()if errTmp != nil {Log().Panic("MQ启动失败", errTmp)return}})defer m.proSimConsumer.GracefulStop()// 总体保证有N个在运行var ch = make(chan int, m.MaxGoroutine)for {fmt.Println("start receive message")mvs, errReceive := m.proSimConsumer.Receive(context.TODO(), 8, 20*time.Second)if errReceive != nil {if strings.Contains(errReceive.Error(), "no new message") {Log().Info(errReceive)} else {Log().Error("顺序消息,拉取MQ消息失败:", errReceive)}time.Sleep(time.Second * 2)continue}var msgGroupMap = make(map[string][]*rmq_client.MessageView, 0)for _, v := range mvs {if _, ok := funcMap[*v.GetTag()]; !ok {Log().Error(v.GetTag(), ": action do not exist")continue} else {// 根据msgGroup汇总msgGroup := v.GetMessageGroup()msgGroupMap[*msgGroup] = append(msgGroupMap[*msgGroup], v)}}// 最大程度多线程消费for _, item := range msgGroupMap {ch <- 1go func(item []*rmq_client.MessageView) {for _, v := range item {fmt.Println(*v.GetTag(), *v.GetMessageGroup(), string(v.GetBody()))action, _ := funcMap[*v.GetTag()]if errTmp := action(v.GetBody()); errTmp != nil {Log().Error("mq顺序消费失败", errTmp)break} else {m.proSimConsumer.Ack(context.TODO(), v)}}<-ch}(item)}}
}

最后需要注意的点:

同一个消费者 Group ID 下所有的 Consumer 实例必须保证订阅的 Topic 一致,并且也必须保证订阅 Topic 时设置的过滤规则(Tag)一致。否则您的消息可能会丢失
请保证订阅一致性
在这里插入图片描述

http://www.shuangfujiaoyu.com/news/40754.html

相关文章:

  • wordpress 技术分析网站seo李守洪排名大师
  • 南昌设计政府网站的公司网上推广怎么收费
  • 阿里云的虚拟主机用什么做网站腾讯会议付费
  • 郑州网站建设系统介绍百度人工客服24小时电话
  • 河南百度建个网站建立网站的流程
  • 做好网站建设工作总结优化营商环境的措施建议
  • php构建网站女孩子做运营是不是压力很大
  • 什么网站可以做邮件列表成都专门做网站的公司
  • 衡水做网站的友情链接图片
  • 广州外贸网站建设公司seo优化软件
  • 网站中全景是怎么做的业务推广方案怎么写
  • 全民建网站自己怎么开电商平台
  • 优质做网站哪家好自动搜索关键词软件
  • 可以做网络兼职的网站优化推广网站seo
  • 怎么查看网页源代码临沂seo公司稳健火星
  • 营销型网站搭建北京优化核酸检测
  • 泉州优化seo网站关键词优化app推广多少钱一单
  • 美女做暧暧网站seo手机关键词排行推广
  • 建立网站需要多少钱一个网站用户体验优化
  • 设计素材网站知乎铜陵seo
  • 网站建设开题报告中的问题网站优化公司大家好
  • 网站婚礼服务态网站建设论文花西子网络营销案例分析
  • 网站优化怎么做分录十大免费最亏的免费app
  • 淘宝网站制作多少钱色盲测试卡
  • 有什么做数据的网站百度招商加盟
  • 深圳网站建设公司乐云seo598公司培训课程有哪些
  • 软件下载网站建设体验营销
  • 手机网站建设制作口碑营销推广
  • 万网虚拟主机两个网站手机百度收录提交入口
  • 旅游网站建设方案预算南昌seo优化公司