rocketmq demo

首先下载rocketmq,启动需要指定rocketmq home目录

cd github

git clone -b develop https://github.com/apache/incubator-rocketmq.git

代码结构代码 收藏代码

whatsmars-mq  
  |-src  
    |-main  
      |-java  
        |-com.itlong.whatsmars.mq.rocketmq.quickstart  
      BrokerStartup.java  
      Consumer.java  
      NamesrvStartup.java  
      Producer.java  
      |-resource  
        conf.properties  
  pom.xml  

依赖:

Xml代码 收藏代码

<dependencies>  
        <!-- https://mvnrepository.com/artifact/org.apache.rocketmq/rocketmq-namesrv -->  
        <dependency>  
            <groupId>org.apache.rocketmq</groupId>  
            <artifactId>rocketmq-namesrv</artifactId>  
            <version>4.0.0-incubating</version>  
        </dependency>  
        <!-- https://mvnrepository.com/artifact/org.apache.rocketmq/rocketmq-broker -->  
        <dependency>  
            <groupId>org.apache.rocketmq</groupId>  
            <artifactId>rocketmq-broker</artifactId>  
            <version>4.0.0-incubating</version>  
        </dependency>  
        <!-- https://mvnrepository.com/artifact/org.apache.rocketmq/rocketmq-client -->  
        <dependency>  
            <groupId>org.apache.rocketmq</groupId>  
            <artifactId>rocketmq-client</artifactId>  
            <version>4.0.0-incubating</version>  
        </dependency>  
  
    </dependencies>  

conf.properties

Xml代码 收藏代码

rocketmqHome=D:\\github\\incubator-rocketmq\\distribution  
namesrvAddr=127.0.0.1:9876  
mapedFileSizeCommitLog=52428800  
mapedFileSizeConsumeQueue=30000  

类似于zookeeper的服务:

Java代码 收藏代码

public class NamesrvStartup {  
  
    public static void main(String[] args) {  
        args = new String[] {"-c", "D:\\github\\whatsmars\\whatsmars-mq\\src\\main\\resources\\conf.properties"};  
        org.apache.rocketmq.namesrv.NamesrvStartup.main(args);  
    }  
}  

Broker:

Java代码 收藏代码

public class BrokerStartup {  
  
    public static void main(String[] args) {  
        args = new String[] {"-c", "D:\\github\\whatsmars\\whatsmars-mq\\src\\main\\resources\\conf.properties"};  
        org.apache.rocketmq.broker.BrokerStartup.main(args);  
        System.out.println("Broker started.");  
    }  
}  

Consumer:

Java代码 收藏代码

package com.itlong.whatsmars.mq.rocketmq.quickstart;  
  
import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;  
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;  
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;  
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;  
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;  
  
/** 
 * This example shows how to subscribe and consume messages using providing {@link DefaultMQPushConsumer}. 
 */  
public class Consumer {  
  
    public static void main(String[] args) throws InterruptedException, MQClientException {  
  
        /* 
         * Instantiate with specified consumer group name. 
         */  
        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name_4");  
  
        /* 
         * Specify name server addresses. 
         * <p/> 
         * 
         * Alternatively, you may specify name server addresses via exporting environmental variable: NAMESRV_ADDR 
         * <pre> 
         * {@code 
         * consumer.setNamesrvAddr("name-server1-ip:9876;name-server2-ip:9876"); 
         * } 
         * </pre> 
         */  
        consumer.setNamesrvAddr("127.0.0.1:9876");  
        /* 
         * Specify where to start in case the specified consumer group is a brand new one. 
         */  
        consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);  
  
        /* 
         * Subscribe one more more topics to consume. 
         */  
        consumer.subscribe("TopicTest", "*");  
  
        /* 
         *  Register callback to execute on arrival of messages fetched from brokers. 
         */  
        consumer.registerMessageListener(new MessageListenerConcurrently() {  
  
            @Override  
            public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs,  
                                                            ConsumeConcurrentlyContext context) {  
                System.out.printf(Thread.currentThread().getName() + " Receive New Messages: " + msgs + "%n");  
                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;  
            }  
        });  
  
        /* 
         *  Launch the consumer instance. 
         */  
        consumer.start();  
  
        System.out.printf("Consumer Started.%n");  
    }  
}  

Producer:

Java代码 收藏代码

package com.itlong.whatsmars.mq.rocketmq.quickstart;  
  
import org.apache.rocketmq.client.exception.MQClientException;  
import org.apache.rocketmq.client.producer.DefaultMQProducer;  
import org.apache.rocketmq.client.producer.SendResult;  
import org.apache.rocketmq.common.message.Message;  
import org.apache.rocketmq.remoting.common.RemotingHelper;  
  
/** 
 * This class demonstrates how to send messages to brokers using provided {@link DefaultMQProducer}. 
 */  
public class Producer {  
    public static void main(String[] args) throws MQClientException, InterruptedException {  
  
        /* 
         * Instantiate with a producer group name. 
         */  
        DefaultMQProducer producer = new DefaultMQProducer("please_rename_unique_group_name");  
  
        /* 
         * Specify name server addresses. 
         * <p/> 
         * 
         * Alternatively, you may specify name server addresses via exporting environmental variable: NAMESRV_ADDR 
         * <pre> 
         * {@code 
         * producer.setNamesrvAddr("name-server1-ip:9876;name-server2-ip:9876"); 
         * } 
         * </pre> 
         */  
        producer.setNamesrvAddr("127.0.0.1:9876");  
  
        /* 
         * Launch the instance. 
         */  
        producer.start();  
  
        for (int i = 0; i < 1000; i++) {  
            try {  
  
                /* 
                 * Create a message instance, specifying topic, tag and message body. 
                 */  
                Message msg = new Message("TopicTest" /* Topic */,  
                    "TagA" /* Tag */,  
                    ("Hello RocketMQ " + i).getBytes(RemotingHelper.DEFAULT_CHARSET) /* Message body */  
                );  
  
                /* 
                 * Call send message to deliver message to one of brokers. 
                 */  
                SendResult sendResult = producer.send(msg);  
  
                System.out.printf("%s%n", sendResult);  
            } catch (Exception e) {  
                e.printStackTrace();  
                Thread.sleep(1000);  
            }  
        }  
  
        /* 
         * Shut down once the producer instance is not longer in use. 
         */  
        producer.shutdown();  
    }  
}  

修改NamesrvStartup,BrokerStartup中的配置文件路径,依次启动NamesrvStartup,BrokerStartup,Consumer,Producer.

消息管理系统 https://github.com/javahongxi/whatsmars/tree/master/rocketmq-console

原文链接:[http://wely.iteye.com/blog/2382296]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值