rocketmq 使用积累

rocketmq 官方文档:http://rocketmq.apache.org/docs/order-example/

nameServer:mq服务安装地址    ip:端口(一般9876)



通过 group, topic来订阅 谁的消息,tag区分谁的消息是哪一条,key 区分消息内容;

rocketmq 生产者:
通过 group, topic来订阅 谁的消息,tag区分谁的消息是哪一条,key 区分消息内容;消息体最大默认4M
mqProducer.send(message)、
   mqProducer.send(message1, new SendCallback() { 
//                @Override 
//                //成功的回调函数 
//                public void onSuccess(SendResult sendResult) { 
//                    System.out.println(sendResult.getSendStatus()); 
//                    System.out.println("成功了"); 
//                } 
//                @Override 
//                //出现异常的回调函数 
//                public void onException(Throwable e) { 
//                System.out.println("失败了"+e.getMessage()); 
//                } 
//            }); 
            //获取某个主题的消息队列 
            List<MessageQueue> messageQueues = mqProducer .fetchPublishMessageQueues( "promotion-to-product" ); 


消费者:1、串行:顺序消费,有失败的消息,会一直重试,时间可以配置,但是不会跳过,可以手动写代码判断,后续消息会一直等待;

 consumer.setMessageListener(new MessageListenerOrderly(){
            int a=0;
            @Override
            public ConsumeOrderlyStatus consumeMessage(List<MessageExt> msgs,ConsumeOrderlyContext context){
                LOGGER.info("消费"+a++);
                return ConsumeOrderlyStatus.SUCCESS;
            }
        });

/2、并行,会跳过失败的消息:
 @Override
    public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs,ConsumeConcurrentlyContext context){
        for (MessageExt messageExt : msgs){
            LOGGER.info("Receive New Message:{},Map<msgId,times>:{}",messageExt.toString(),msgsMap);
            handleMessage(messageExt);
        }
        return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;

消费者还可以配置:
广播和集群模式:广播模式:生产者发一条消息 所有订阅的消费者会得到相同的消息,集群:生产者发一条消息 所有订阅的消费者只有一个会得到消息

坑:groupname各个服务之间不能共用, 收发消息只要topic对应就行,group决定borker里面queue的分配,不同服务共用一个group,不同topic时会导致消息争夺,丢失。






通过 group, topic来订阅 谁的消息,tag区分谁的消息是哪一条,key 区分消息内容;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值