自建rocketmq(单机版)

环境:

  我是在本机电脑安装的docker模拟linux环境用于测试rocketmq

首先网上下载rocketmq

 
 
在创建docker先分配好端口(下面的20002到20004端口是提供给rocketmq的linstenPort,默认是10909和10911,因为找了很久的资料都不知道怎么修改rocketmq的listenPort指向宿主机器的端口,所以知道保证映射进去和反射出来的端口一直就好)
  docker run -itd -p 20000:22 -p 20001:9876 -p 20002-20004:20002-20004 --name rocketmq centos:6.7    (centos:6.7是我自己建的镜像image)
 
 
 
解压到linux目录中
 
启动namesrv
  nohup ./bin/mqnamesrv -n 127.0.0.1:9876 &
启动broker
  vi ./conf/broker.conf
  添加两行:
    brokerIP1=192.168.1.101(指定外网ip或宿主机器ip)
    listenPort=20004
  nohup ./bin/mqbroker -n 127.0.0.1:9876 -c ./conf/broker.conf &
添加或修改topic
   ./bin/mqadmin updateTopic -t topic -n 127.0.0.1:9876 -b 127.0.0.1:20004
删除topic
   ./bin/mqadmin deleteTopic -n 127.0.0.1:9876 -t topic  -c DefaultCluester
新增修改订阅组
  ./bin/mqadmin updateSubGroup -g GID_group -b 127.0.0.1:20004
删除订阅组
  ./bin/mqadmin deleteSubGroup  -g GID_group -b 127.0.0.1:20004 -n 127.0.0.1:9876
查看集群消息
  ./bin/mqadmin clusterList -n 127.0.0.1:9876
 
 
到此一个group=GID_group topic=topic  的rocketmq消息队列已经完成了,在宿主机器只要连127.0.0.1:20001即可
 
java Producer demo
public static void main(String[] args) {
        DefaultMQProducer producer = new DefaultMQProducer();
        producer.setProducerGroup("GID_group");
        producer.setNamesrvAddr("127.0.0.1:20001");
        try {
            producer.start();
            SendResult send = producer.send(new Message("topic","test","give a test".getBytes()));
            if (send != null) {
                System.out.println("发送消息");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        producer.shutdown();
    }

java consumer demo

public static void main(String[] args) {

        System.out.println("消息端调用...");
        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("GID_group");
        consumer.setNamesrvAddr("127.0.0.1:20001");
        try {
            consumer.subscribe("topic", "*");
            consumer.registerMessageListener(new MessageListenerOrderly() {
                @Override
                public ConsumeOrderlyStatus consumeMessage(List<MessageExt> list, ConsumeOrderlyContext consumeOrderlyContext) {
                    list.forEach(msg -> {
System.out.println("tags:"+msg.getTags()+",body:"+msg.getBody()); 
                    });
                    return ConsumeOrderlyStatus.SUCCESS;
                }
            });
//            consumer.registerMessageListener(new MessageListenerConcurrently() {
//                @Override
//                public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> list, ConsumeConcurrentlyContext consumeConcurrentlyContext) {
//                    return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
//                }
//            });
            consumer.start();
        } catch (Exception e) {
            e.printStackTrace();
        }

        System.out.println("启动成功...");
    }
 
参考:

猜你喜欢

转载自www.cnblogs.com/yongan140621/p/12762131.html
今日推荐