RocketMQ-HelloWorld-demo--李波RocketMQ学习

maven项目pom.xml中导包

<dependencies>
    <!-- RocketMQ -->
        <dependency>  
             <groupId>org.apache.rocketmq</groupId>  
             <artifactId>rocketmq-all</artifactId>  
             <version>4.2.0</version>  
             <type>pom</type>  
        </dependency>
        <dependency>  
             <groupId>org.apache.rocketmq</groupId>  
             <artifactId>rocketmq-client</artifactId>  
             <version>4.2.0</version>  
        </dependency>  

        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.1.1</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.1.1</version>
        </dependency>
  </dependencies>

生产者

package exercise1.helloworld;
import java.io.UnsupportedEncodingException;
import org.apache.rocketmq.client.exception.MQBrokerException;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.remoting.exception.RemotingException;
public class Producer {
    public static void main(String[] args) throws MQClientException, RemotingException, MQBrokerException, InterruptedException, UnsupportedEncodingException {
        //01new一个默认的message queue 生产者,一定要给它一个名字
        DefaultMQProducer producer = new DefaultMQProducer("libo-1");
        //02给这个生产者设置注册的地址,本地的9876port
        producer.setNamesrvAddr("localhost:9876");
        //03启动producer,启动不代表发送了消息
        producer.start();
        //04准备要发送的Message,指定主题,标签,和消息
        Message msg = new Message("test1","tag1","李波".getBytes("utf-8"));
        //05因为发完消息后是需要有回馈的,发送结果(顾名思义)
        SendResult sendResult = producer.send(msg);
        System.out.println(sendResult);
        //06关闭producer
        producer.shutdown();
    }
}

消费者

package exercise1.helloworld;
import java.util.List;
import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.common.consumer.ConsumeFromWhere;
import org.apache.rocketmq.common.message.MessageExt;
public class Consumer {
    public static void main(String[] args) throws MQClientException {
        //01new 一个默认的推送消费者,同样要取个名字
        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("liboconsumer");
        //02消费者同样要注册
        consumer.setNamesrvAddr("localhost:9876");
        //03消费者从队列的哪里开始拿消息呢?
        consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);
        //04消费者订阅
        consumer.subscribe("test1","*");
        //05用监听器接收,所以消费者需要注册一个监听器
        //参数只有一个,叫做当前的消息监听者,重写这个监听者的消费消息的方法
        //返回当前的消费状态(真正的参数)
        consumer.registerMessageListener(new MessageListenerConcurrently() {

            public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, 
                    ConsumeConcurrentlyContext context) {
                try {
                    String str = new String(msgs.get(0).getBody(),"utf-8");
                    System.out.println(str);
                } catch (Exception e) {
                    e.printStackTrace();
                    //如果出现异常的话,一会再请求,时间逐渐延长,达到一定次数
                    //不在请求,将错误记录日志
                    return ConsumeConcurrentlyStatus.RECONSUME_LATER;
                }
                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
            }
        });
        //06启动消费者
        consumer.start();
        System.out.println("消费者启动了");
    }
}
//namesrv启动
start mqnamesrv.cmd
//broker启动
start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true
//console启动
java -jar rocketmq-console-ng-1.0.0.jar
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值