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

周口 网站建设展馆设计的主题有哪些

周口 网站建设,展馆设计的主题有哪些,扬中网站优化公司,宁波网站建设i sp.net消费者获取消息是从Master Broker还是Slave Broker获取? Master Broker宕机,Slave Broker会自动切换为Master Broker吗? 这种Master-Slave模式不是彻底的高可用模式,他没法实现自动把Slave切换为Master。在RocketMQ 4.5之后&…

消费者获取消息是从Master Broker还是Slave Broker获取?

Master Broker宕机,Slave Broker会自动切换为Master Broker吗?

这种Master-Slave模式不是彻底的高可用模式,他没法实现自动把Slave切换为Master。在RocketMQ 4.5之后,这种情况得到了改变,因为RocketMQ支持了一种新的机制,叫做Dledger(基于Raft协议)

老齐

当同一类消息被送入不同队列,且这些消息在处理上并不需要按时序消费时,可以考虑使用并发消费模式。并发消费模式生产者会将消息轮询发送到不同的队列当中,这些队列会和消费者实例建立多个连接(线程)将消息并发送入到不同的消费者。因为消费者处理速度有快慢,所以并不能保证物流数据会按0~9的顺序依次消费。并发消费模式处理效率很高,但无法保证有序性。
在这里插入图片描述

有序消费

有序消息是指生产者在产生数据的时候,根据Hash规则指定让消息放入哪个队列,在消费者消费时会保证不同消费者针对每一个队列只有唯一的连接(线程)用于消费指定队列。

有序消费模式可以保证消息按队列FIFO顺序依次被消费,但因此失去并发性能,有序消费模式只有在业务要求必须按顺序消费的场景下才允许使用。
在这里插入图片描述

RocketMQ如何实现有序消息

要实现RocketMQ有序消息需要两点调整:
生产者端要求按id等唯一标识分配消息队列消费者端采用专用的监听器保证对队列的单线程应用下面咱们来看一下代码:

生产者端

com.itlaogi.rocketmg.seqmsg.SequenceMessageProvider
核心代码是在向Broker发送消息时附加MessageQueueSelector对象,在实现select方法时指定存放到哪个队列中。

public class RocketMQProducerExample {public static void main(String[] args) throws MQClientException {// 创建生产者实例DefaultMQProducer producer = new DefaultMQProducer("producer_group_name");// 设置NameServer地址,这里需要替换为实际的地址producer.setNamesrvAddr("localhost:9876");producer.start();try {for (Integer orderId = 1; orderId <= 10; orderId++) {for (int i = 0; i < 3; i++) {String data = "";switch (i % 3) {case 0:data = orderId + "号创建订单";break;case 1:data = orderId + "号订单减库存";break;case 2:data = orderId + "号订单加积分";break;}// 创建消息对象 topic="order", tags="order", key=orderIdMessage message = new Message("order", "order", orderId.toString(), data.getBytes("UTF-8"));// 发送消息,实现MessageQueueSelector接口SendResult result = producer.send(message, new MessageQueueSelector() {// select方法决定向broker哪一个队列发送消息@Overridepublic MessageQueue select(List<MessageQueue> mqs, Message msg, Object arg) {int currentOrderId = Integer.parseInt(msg.getKeys());int index = currentOrderId % mqs.size();MessageQueue messageQueue = mqs.get(index);Logger.getLogger(RocketMQProducerExample.class.getName()).log(Level.INFO,"id:{0},data:{1},queue:{2}", new Object[]{currentOrderId, new String(msg.getBody()), messageQueue});return messageQueue;}}, null);}}} catch (Exception e) {e.printStackTrace();} finally {producer.shutdown();}}
}
public class RocketMQConsumerExample {public static void main(String[] args) throws Exception {// 创建消费者实例并指定消费者组名DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("consumer_group_name");// 设置NameServer地址,需替换为实际地址consumer.setNamesrvAddr("localhost:9876");// 设置从哪里开始消费消息,比如从上次消费的位置开始consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_LAST_OFFSET);// 订阅主题和标签consumer.subscribe("order", "*");// 注册顺序消费的监听器,用于实现有序队列consumer.registerMessageListener(new MessageListenerOrderly() {@Overridepublic ConsumeOrderlyStatus consumeMessage(List<MessageExt> msgs, ConsumeOrderlyContext context) {try {for (MessageExt msg : msgs) {// 在这里处理具体的消息,按照顺序来处理每个消息System.out.println(new String(msg.getBody()));}return ConsumeOrderlyStatus.SUCCESS;} catch (Exception e) {e.printStackTrace();return ConsumeOrderlyStatus.SUSPEND_CURRENT_QUEUE_A_MOMENT;}}});consumer.start();System.out.println("Consumer started.");}
}

运行结果
在这里插入图片描述

如何实现消息全局顺序消费?

只需要在生产者固定将所有消息发送到0号队列即可保证全局有序,这也意味着全局采用单线程消费,执行效率极差

@Override
public MessageQueue select(List<MessageQueue> mgs, Message msg, object arg){MessageQueue messageQueue = mgs.get(0);return messageQueue;
}

有序消费有什么使用限制吗?

有序消费模式只支持集群模式(CLUSTERING),不支持广播模式(BROADCASTING),:采用广播模式会无法接收到数据

//设置为集群模式
consumer.setMessageModel(MessageMode1.CLUSTERING)://支持有序消息,默认模式。
consumer.setMessageModel(MessageMode1.BROADCASTING)://不支持有序消息
http://www.yayakq.cn/news/740690/

相关文章:

  • 东莞技术网站建设济南公司注册网站
  • 网页制作网站图片石家庄网站设计公司排名
  • 将网站的字体设计成百分比的形式要怎样定义外贸seo关键词
  • 桥的设计网站建设技术培训机构
  • 九江网络营销seo技术分类
  • 正规的网站制作服务商wordpress添加下载地址
  • 合肥网站建帮人代做静态网站多少钱
  • 郑州网站建设中国建设建设银行wordpress 接口
  • 电子商务网站设计的原则Wordpress页面图片设计
  • 做一组静态页面网站多少钱网页设计制作页面
  • 挂甲寺网站建设wordpress整站无刷新
  • 苗木企业网站源码惠州seo按天付费
  • 绥德网站建设国外设交网站开发客户的重要性
  • 电商网站开发常用代码家具设计网站推荐
  • 怎么做倒计时网站专业俄语网站设计
  • 合肥正规的seo公司长沙谷歌seo
  • 商务网站建设心得体会普洱建设单位网站
  • 猎头公司网站建设方案微信小程序定制开发需要多少钱
  • 长网址转短网址网站网站开发者常见问题
  • 小型企业建设网站logofree制作网站
  • 云南固恒建设集团有限公司网站网站备案需要多长时间
  • 网站升级每天自动更新网上怎么发布广告
  • 太原免费静态网站制作网站快慢由什么决定
  • 网站3d特效源码商丘网站推广
  • 360网站建设的目标是什么校园门户网站系统建设关键技术
  • 杭州网站建设价格搭建wordpress服务器
  • 网站未备案会怎么样科技政策要聚焦自立自强
  • 网站优化分析百度登录页
  • 嘉兴云建站模板响水做网站的
  • 濮阳网站优化公司哪家好做中国旅游网站的目的与必要性