rocketmq_002_demo测试

集群配置成功后可以试试下面demo

我的集群是4.4.0版本,maven选择4.4.0

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

 同步发送消息

public class SyncProducer {
    public static void main(String[] args) throws InterruptedException, RemotingException, MQClientException, MQBrokerException {
//        1.创建消息生产者,并且制定生产者组名
        DefaultMQProducer producer = new DefaultMQProducer("group1");
//        设置超时时间
        producer.setSendMsgTimeout(8000);
//        2.指定namesrv地址
        producer.setNamesrvAddr("192.168.48.128:9876;192.168.48.137:9876");
//        producer.setNamesrvAddr("47.96.165.93:9876;106.52.131.197:9876");
//        3.启动producer
        try {
            producer.start();
        } catch (MQClientException e) {
            e.printStackTrace();
        }
        for (int i = 0;i<10;i++){
//        4.创建消息对象,指定主题topic,tag和消息体
            Message msg = new Message("base","tag1",("hello world"+i).getBytes());
//        5.发送消息
            SendResult result = producer.send(msg);
            SendStatus status = result.getSendStatus();
            String msgId = result.getMsgId();
            int queueId = result.getMessageQueue().getQueueId();
            System.out.println("send status:"+result+",message ID:"+msgId+",queue:"+queueId);
            TimeUnit.SECONDS.sleep(1);
            System.out.println(i);
        }
//                * 关闭producer
        producer.shutdown();

    }
}

异步发送消息 

public class AsyncProducer {
    public static void main(String[] args) throws MQClientException, UnsupportedEncodingException, RemotingException, InterruptedException {
//        实例化消息生产者Producer
        DefaultMQProducer producer = new DefaultMQProducer("group2");
//        超时时间
        producer.setSendMsgTimeout(10000);
//        设置namesrv
        producer.setNamesrvAddr("192.168.48.128:9876;192.168.48.137:9876");
//        producer.setNamesrvAddr("106.52.131.197:9876;47.96.165.93:9876");
//        启动producer实例
        producer.start();
        producer.setRetryTimesWhenSendAsyncFailed(0);
        int i = 0;
        for(;i<100;i++){
            final int index = i;
//            创建消息,并且制定topic,tag和消息体
            Message msg = new Message("base2-by-async", "tag2","orderID188","hello world".getBytes(RemotingHelper.DEFAULT_CHARSET));
//            SendCallback接收异步返回结果的回调
            producer.send(msg,new SendCallback(){

                @Override
                public void onSuccess(SendResult sendResult) {
                    System.out.println(sendResult);
                }

                @Override
                public void onException(Throwable throwable) {
                    System.out.println(throwable);
                }
            });
        }
        TimeUnit.SECONDS.sleep(1);
        System.out.println("i="+i);
        producer.shutdown();
    }
}

单向发送消息(比如日志) 

public class OneWayProducer {
//    日志发送
    public static void main(String[] args) {
        //    实例化Producer
        DefaultMQProducer producer = new DefaultMQProducer("please_rename_unique_group_name");
//    设置NameServer的地址
        producer.setNamesrvAddr("localhost:9876");
//    启动Producer
        try {
            producer.start();
            for(int i=0;i<100;i++){
//        创建消息,并且指定Topic,Tag和消息体
                Message msg = new Message("TopicTest","Tag3",("Hello Rocketmq"+i).getBytes(RemotingHelper.DEFAULT_CHARSET));
                producer.sendOneway(msg);
                producer.shutdown();
            }
        } catch (MQClientException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (RemotingException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

    }
}

消费消息(默认消费方式为负载均衡,下面设置的为广播) 

public class Consumer {
    public static void main(String[] args) {
        consumer();
    }

    public static void consumer(){
        //        1 创建消费者Consumer ,并确定消费者组名
        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("group1");
//        2 指定NameServer地址
        consumer.setNamesrvAddr("192.168.48.128:9876;192.168.48.137:9876");
//        consumer.setNamesrvAddr("106.52.131.197:9876;47.96.165.93:9876");
        try {
//            3 订阅主题Topic和Tag
            consumer.subscribe("base","tag1");
//            设置订阅模式,有负载均衡、广播两种模式,默认负载均衡,下面设置的是广播
            consumer.setMessageModel(MessageModel.BROADCASTING);
//        4 设置回调函数,处理消息
            consumer.registerMessageListener(new MessageListenerConcurrently() {
                //            接受消息内容
                @Override
                public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
                    for(MessageExt msg:msgs){
                        System.out.println(msg.toString());
                    }
                    return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
                }
            });
//        5 启动消息内容
            consumer.start();
        } catch (MQClientException e) {
            e.printStackTrace();
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值