RocketMQ(二)

278 阅读1分钟

安装

broker默认端口号10911

先在node1上操作

1.png 2.png cd /bin 3.png ☆新开一个标签页2☆ 4.png cd /opt/rocketmq-4.9.2/bin 5.png vi mqbroker 6.png vi runbroker.sh 8.png 使其值少于4G 注意:我们这是测试环境 生产不要这么玩! 7.png 再次执行,正常运行 启动broker 9.png ☆新开一个标签页3☆ 10.png 将节点1的rocketmq包发送到节点2上 11.png

再在node2上操作

cd /opt/rocketmq-4.7.2/bin 12.png ☆新开一个node2标签页☆ cd /opt/rocketmq-4.7.2/bin

将broker注册到node1的nameserver上

13.png

返回node1的标签页3

cd ~

默认有两个目录logs、store 生产按照要求来

14.png 16.png

测试连接

15.png

public class SimpleRocketMQ {

    @Test
    public void producer() throws MQClientException, MQBrokerException, RemotingException, InterruptedException {
        DefaultMQProducer producer = new DefaultMQProducer("ooxx");
        producer.setNamesrvAddr("192.168.150.11:9876");
        producer.start();

        for (int i = 0; i< 10; i++){
            Message message = new Message();
            message.setTopic("wula");
            message.setTags("Tags");
            message.setBody(("ooxx" + i).getBytes());
            message.setWaitStoreMsgOK(true);

            // option 1
            SendResult result = producer.send(message);

            // option 2
            producer.send(message, new SendCallback() {
                @Override
                public void onSuccess(SendResult sendResult) {
                }
                @Override
                public void onException(Throwable throwable) {

                }
            });

            // option 3
            producer.sendOneway(message); // 光发

            MessageQueue messageQueue = new MessageQueue("wula", "node01", 0);
            SendResult send = producer.send(message, messageQueue);
            System.out.println(send);
        }

    }

    @Test
    public void consumerPull() throws MQClientException, IOException {
        DefaultLitePullConsumer consumer = new DefaultLitePullConsumer("ooxx");
        consumer.setNamesrvAddr("192.168.150.11:9876");
        consumer.start();

        Collection<MessageQueue> mqs = consumer.fetchMessageQueues("wula");
        System.out.println("queues:");
        mqs.forEach(messageQueue -> System.out.println(messageQueue));
        System.out.println("poll...");
//        consumer.assign(mqs);

        Collection<MessageQueue> queue = new ArrayList<>();
        queue.add(new MessageQueue("wula", "node01", 0));
        consumer.assign(queue);
        List<MessageExt> poll = consumer.poll();
        poll.forEach(messageExt -> System.out.println(messageExt));
        System.in.read();
    }

    @Test
    public void consumerPush() throws Exception {
        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("consumer_ox");
        consumer.setNamesrvAddr("192.168.150.11:9876");
        consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);

        consumer.subscribe("wula", "*");
        consumer.registerMessageListener(new MessageListenerConcurrently() {
            @Override
            public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> list, ConsumeConcurrentlyContext consumeConcurrentlyContext) {
                list.forEach(messageExt -> {
                    byte[] body = messageExt.getBody();
                    String message = new String(body);
                    System.out.println(message);
                });
                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
            }
        });
        consumer.start();
        // 自测 加个 无线循环或阻塞
    }

    @Test
    public void admin() throws MQClientException, RemotingException, InterruptedException {
        DefaultMQAdminExt admin = new DefaultMQAdminExt();
        admin.setNamesrvAddr("192.168.150.11:9876");
        admin.start();

        TopicList topicList = admin.fetchAllTopicList();
        Set<String> sets = topicList.getTopicList();
        sets.forEach(s -> System.out.println(s));

        System.out.println("topic route | info");
        TopicRouteData wula = admin.examineTopicRouteInfo("wula");
        System.out.println(wula);
    }
}

观察

node1的标签页3

cd /opt/rocketmq-4.9.2/bin ./mqadmin 17.png 18.png 19.png 20.png 21.png 22.png