• 消息中间件--"rocketmq"02之QuickStart


    依赖

    <dependency>
        <groupId>com.alibaba.rocketmq</groupId>
        <artifactId>rocketmq-client</artifactId>
        <version>3.2.6</version>
    </dependency>
    
    
    

    QuickStart

    producer

    
    //伪代码 producer
    
    DefaultMQProducer producer = new DefaultMQProducer ("ProducerGroup");
    producer.setNamesrvAddr("192.168.1.121:9876;192.168.1.122:9876");
    producer.start();
    
    Message msg = new Message("TopicTest","TagTest","hello world".getBytes("utf-8"));
    
    SendResult sendResult = producer.send(msg);
    
    producer.shutdown();
    
    
    

    consumer

    
    //伪代码 consumer
    
    DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("ProducerGroup");
    consumer.setNamesrvAddr("192.168.1.121:9876;192.168.1.122:9876");
    consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUMER_FROM_FIRST_OFFSET);
    comsumer.subscribe("TopicTest","*");
    consumer.registerMessageListener(new MessageListenerConcurrently(){
        
        @Override
        public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs,ConsumeConcurrentlyContext context){
            
            for(MessageExt ext:msgs){
                System.out.println(new Date()+ new String(ext.getBody(),"utf-8"));
            }
            
            return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
            
        }
        
        
    });
    
    consumer.start();
    
    );
    
    

    QuickStart 结论

    • 无论生产者、消费者都必须给出GroupName,而且具有唯一性!这个组名称,是维护在应用系统级别上的,比如在生产端指定一个名称:ProducerGroupName,这个名称是需要应用系统来保证唯一性的,一类Producer的集合的名称,
      这类producer通常发送一类消息,且发送逻辑一致。同理消费者也是这样。

    • rocketmq默认是将消息持久化了,当一个消费组消费完消息以后,broker 并没有把消息删掉,而是持久化了。现在我们测试一下,现在换一个消费组,改变ComsumerGroupName再次消费的话,可以将broker上面的持久化的所有消息都消费掉。

    • 生产到哪个Topic的哪个Tag下,消费者也是从Topic的哪个Tag进行消费,可见这个Tag有点类似于JMS Selector机制,即实现消息的过滤

    • 生产者、消费者需要设置NameServer地址。

    • 这里,采用的是Consumer Push的方式,即设置Listener机制回调,相当于开启了一个线程。以后为大家介绍Consumer Pull的方式。


    这里消费消息是没有什么顺序的,以后我们在来谈消息的顺序性。

  • 相关阅读:
    美国队长清晰TC中字 迅雷下载+ 美国队长 漫画 复仇者迅雷下载
    【转】腾讯、人人、新浪社交网络优劣势分析(转自月光博客)
    【技术贴】NVIDIA控制面板设,显示屏输入信号超出范围
    【技术贴】怎么拖动vs2008的控件
    SQL Server 2000/2005检测存储过程名是否存在,存在删除
    asp.net生成HTML
    gridview列 数字、货币和日期 显示格式
    用C#编写托盘程序
    判断地址栏参数,为空或null
    C# 读取计算机CPU,HDD信息
  • 原文地址:https://www.cnblogs.com/leihuazhe/p/7689572.html
Copyright © 2020-2023  润新知