rocketMq

一: 添加jar

<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-client</artifactId>
    <version>4.5.2</version>
</dependency>

二 :生产者

package com.gupao;

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.MessageQueueSelector;
import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.common.message.MessageQueue;
import org.apache.rocketmq.remoting.exception.RemotingException;

import java.util.List;

public class RocketmqProvider {

    public static void main(String[] args) throws MQClientException, RemotingException, InterruptedException, MQBrokerException {

        //创建生产者
        DefaultMQProducer producer=new DefaultMQProducer("zlp_producer_group");

        producer.setNamesrvAddr("192.168.1.111:9876");//连接服务器

        producer.start(); //启动
        int num=0;
        while (num<2){
            num++;
            // 创建的主题  标签   消息内容
            Message message=new Message("zlp_test_topic","tagA",("hello"+num).getBytes());

            //producer.send(message)
            System.out.println(message);
            producer.send(message, new MessageQueueSelector() {
                public MessageQueue select(List<MessageQueue> list, Message message, Object o) {
                    return list.get(0);// 主题有多个队列  将消息发送到第一个队列 可保证消息的顺序性
                }
            },"key-"+num);
        }

    }
}

 

三 消费者

package com.gupao;

import org.apache.rocketmq.client.consumer.DefaultMQPullConsumer;
import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import org.apache.rocketmq.client.consumer.listener.*;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.common.consumer.ConsumeFromWhere;
import org.apache.rocketmq.common.message.MessageExt;

import java.util.List;

public class RocketmqConsumer {

    public static void main(String[] args) throws MQClientException {
        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("zlp_consumer_group");

        consumer.setNamesrvAddr("192.168.1.111:9876");
        //CONSUME_FROM_FIRST_OFFSET  从消费队列最小偏移量开始消费。

        consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);
        // 从zlp_test_topic 主题 消费   第二个参数 正则表达式 * 代表所有  可以指定 某个tag (tagA)
        consumer.subscribe("zlp_test_topic", "*");

       /* consumer.registerMessageListener(new MessageListenerConcurrently() {
            public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> list, ConsumeConcurrentlyContext consumeConcurrentlyContext) {
                System.out.println("接收:  "+list);
               return  ConsumeConcurrentlyStatus.CONSUME_SUCCESS;// 签收成功 不然队列以为这条消息没有消费  不会从队列中 移除这条信息  会继续发送
            }
        });*/

        consumer.registerMessageListener(new MessageListenerOrderly() {
            public ConsumeOrderlyStatus consumeMessage(List<MessageExt> list, ConsumeOrderlyContext consumeOrderlyContext) {

                MessageExt messageExt = list.get(0);
                System.out.println("接收信息: " + list);
                if (messageExt.getReconsumeTimes() == 2)// 一条消息 被接收三次(0,1,2) 都没有消费成功
                {
                    System.out.println("签收了三次");
                    // 可以将该信息 记录到数据库
                    return ConsumeOrderlyStatus.SUCCESS;//直接签收
                }
                int a=1/0;
                return ConsumeOrderlyStatus.SUCCESS;
            }
        });

        consumer.start();
    }
}

 

 rocketmq  控制台 安装地址   https://mp.csdn.net/postedit/100171450

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值