rocketmq发送第一条消息(三)

直接上代码

导包,pom.xml

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

生产者 

public static void main(String[] args) throws Exception{
        DefaultMQProducer producer = new DefaultMQProducer("testGrp");

        // 设置nameserver地址  nameserver具备路由功能(发现服务,有点注册中心的意思),让其分配合理的broker来进行消息发送
        producer.setNamesrvAddr("192.168.52.11:9876");
        try {
            producer.start();
        } catch (MQClientException e) {
            e.printStackTrace();
        }

        // topic 消息将要发送的地址,消息目的地
        // body 消息中具体的数据
        Message message1 = new Message("monkeyTopic", "第1条消息".getBytes());
        Message message2 = new Message("monkeyTopic", "第2条消息".getBytes());
        Message message3 = new Message("monkeyTopic", "第3条消息".getBytes());

        List<Message> messageList = new ArrayList<>();
        messageList.add(message1);
        messageList.add(message2);
        messageList.add(message3);
        // 同步消息发送,等待broker返回值 sendResult是返回回来的
//        SendResult sendResult = producer.send(message);  // 单条消息发送
        SendResult sendResult = producer.send(messageList); // 多条消息同时发送,总大小官方建议小于1M

        System.out.println("sendResult: " + sendResult);

        producer.shutdown();
    }

生产者启动效果图:

消费者

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

        consumer.setNamesrvAddr("192.168.52.11:9876");

        // 每个消费者需要关注一个topic,也就说消费消息只能消息固定topic的消息,不能随便消费

        // topic 表示消息地址
        // 过滤器 * 表示不过滤
        consumer.subscribe("monkeyTopic","*");

        consumer.registerMessageListener(new MessageListenerConcurrently() {
            @Override
            public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> list, ConsumeConcurrentlyContext consumeConcurrentlyContext) {
                for (MessageExt messageExt : list){
                    System.out.println(new String(messageExt.getBody()));
                }
                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
            }
        });
        // 广播消息,所有的监听同一个topic的都能收到
        consumer.setMessageModel(MessageModel.BROADCASTING);
        // 集群消息,消息只能消费一次
//        consumer.setMessageModel(MessageModel.CLUSTERING);
        consumer.start();
        System.out.println("consumer start .....");
    }

消费者消费启动效果图:

猜你喜欢

转载自blog.csdn.net/u010960161/article/details/118770369
今日推荐