rocketmq学习
官网地址
安装name server和broker
git clone https://github.com/apache/incubator-rocketmq.git
cd incubator-rocketmq
mvn clean package install -Prelease-all assembly:assembly -U
然后target目录下的apache-rocketmq-all就是我们需要的
把apache-rocketmq-all抽出来,移到apache-rocketmq-all目录下
执行nohup sh bin/mqnamesrv & 启动name server
tail -f ~/logs/rocketmqlogs/namesrv.log 查看name server日志
执行nohup sh bin/mqbroker -n localhost:9876 & 启动Broker
tail -f ~/logs/rocketmqlogs/broker.log 查看Broker日志
demo
添加依赖
<!--rocketmq-->
<dependency>
  <groupId>org.apache.rocketmq</groupId>
  <artifactId>rocketmq-client</artifactId>
  <version>4.0.0-incubating</version>
</dependency>
消费者
/**
 * @author fengzp
 * @date 2017/3/31下午5:10
 * @email fengzp@gzyitop.com
 * @company 广州易站通计算机科技有限公司
 */
public class ConsumerMQ {
    public static void main(String[] args) throws MQClientException, InterruptedException {
        /**
         * ConsumerGroupName需要由应用来保证唯一
         */
        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("GroupName");
        /**
         * 指定服务端和端口
         */
        consumer.setNamesrvAddr("localhost:9876");
        /**
         * 订阅指定topic下tags为TagName的消息; "TagA || TagB || TagC" 代表订阅TagA和TagB和TagC的消息; "*" 代表订阅所有消息
         */
        consumer.subscribe("TopicName", "TagName");
        /**
         * 设置Consumer第一次启动是从队列头部开始消费还是队列尾部开始消费
         * 如果非第一次启动,那么按照上次消费的位置继续消费
         */
        consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);
        /**
         * * 默认msgs里只有一条消息,可以通过consumer.setConsumeMessageBatchMaxSize();来设置批量接收消息
         */
        consumer.registerMessageListener(new MessageListenerConcurrently() {
            public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> list, ConsumeConcurrentlyContext consumeConcurrentlyContext) {
                for (MessageExt msg : list) {
                    /**
                     * msg.getMsgId(); //msg唯一id
                     * msg.getTopic();
                     * msg.getTags();
                     */
                    System.out.println(new String(msg.getBody()));
                }
                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
            }
        });
        consumer.start();
        System.out.println("Consumer Started.");
    }
}
提供者
/**
* @author fengzp
* @date 2017/3/31下午5:07
* @email fengzp@gzyitop.com
* @company 广州易站通计算机科技有限公司
*/
public class ProducerMQ {
    public static void main(String[] args) throws MQClientException, InterruptedException {
        DefaultMQProducer producer = new DefaultMQProducer("GroupName");
        producer.setNamesrvAddr("localhost:9876");
        producer.setInstanceName("InstanceName");
        producer.start();
        try {
            for (int i = 0; i < 3; i++) {
                Message msg = new Message("TopicName", "TagName", (new Date() + " fengzp hao shuai a " + i).getBytes());
                SendResult sendResult = producer.send(msg);
                System.out.println(sendResult.getMsgId() + " : " + sendResult.getSendStatus().name());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        /**
         * 应用退出时,需要调用shutdown方法来在MetaQ服务器上注销自己
         */
        producer.shutdown();
    }
}
测试
先启动消费者,然后启动提供者
提供者:

消费者:

消息成功发送,并且触发了订阅。
这里有些不错的介绍rocketmq的文章
rocketmq学习的更多相关文章
- RocketMQ学习笔记(16)----RocketMQ搭建双主双从(异步复制)集群
		
1. 修改RocketMQ默认启动端口 由于只有两台机器,部署双主双从需要四个节点,所以只能修改rocketmq的默认启动端口,从官网下载rocketmq的source文件,解压后使用idea打开,全 ...
 - RocketMQ学习笔记(15)----RocketMQ的消息模式
		
在前面学习ActiveMQ时,看到ActiveMQ可以是队列消息模式,也可以是订阅发布模式. 同样,在RocketMQ中,也存在两种消息模式,即是集群消费模式和广播消费模式. 1. 集群消费模式 跟A ...
 - RocketMQ学习笔记(13)----RocketMQ的Consumer消息重试
		
1. 概念 Producer端重试: 生产者端的消息失败,也就是Producer往MQ上发消息没有发送成功,比如网络抖动导致生产者发送消息到MQ失败. 这种消息失败重试我们可以手动设置发送失败重试的次 ...
 - RocketMQ学习笔记(14)----RocketMQ的去重策略
		
1. Exactly Only Once (1). 发送消息阶段,不允许发送重复的消息 (2). 消费消息阶段,不允许消费重复的消息. 只有以上两个条件都满足情况下,才能认为消息是“Exactly O ...
 - RocketMQ学习笔记(4)----RocketMQ搭建双Master集群
		
前面已经学习了RockeMQ的四种集群方式,接下来就来搭建一个双Master(2m)的集群环境. 1. 双Master服务器环境 序号 ip 用户名 密码 角色 模式 (1) 47.105.145.1 ...
 - rocketmq学习(一)  rocketmq介绍与安装
		
1.消息队列介绍 消息队列本质上来说是一个符合先进先出原则的单向队列:一方发送消息并存入消息队列尾部(生产者投递消息),一方从消息队列的头部取出消息(消费者消费消息).但对于一个成熟可靠的消息队列来说 ...
 - rocketmq 学习记录-2
		
产品选型 我们在进行中间件选型时,一般都是通过下面几点来进行产品选型的: 1.性能 2.功能支持程度 3.开发语言(团队中是否有成员熟悉此中间件的开发语言,市场上此种语言的开发人员是否好招) 4.有多 ...
 - rocketmq学习(二) rocketmq集群部署与图形化控制台安装
		
1.rocketmq图形化控制台安装 虽然rocketmq为用户提供了使用命令行管理主题.消费组以及broker配置的功能,但对于不够熟练的非运维人员来说,命令行的管理界面还是较难使用的.为此,我们可 ...
 - RocketMQ学习记录
		
RocketMQ是一款分布式.队列模型的消息中间件,具有以下特点: 1.能够保证严格的消息顺序 2.提供丰富的消息拉取模式 3.高效的订阅者水平扩展能力 4.实时的消息订阅机制 5.亿级消息堆积能力 ...
 - 2018/1/28 RocketMq学习笔记
		
RocketMq是支持Topic模式的MQ中间件,它的传输格式为topic(主题,一个product对应一个主题,),Tag(标签,其实就是副标题,是为了更好的支持集群模式而出现的,这样客户端可以指定 ...
 
随机推荐
- tomcat用虚拟目录方式发布项目与manager页面配置
			
conf/Catalina/localhost:指定项目的配置信息 1.添加:ROOT.xml 听见Context节点: <Context docBase="/usr/local/to ...
 - [SoapUI] 获取当前时间包括年月日时分秒来作为命名
			
import java.text.SimpleDateFormat GregorianCalendar calendar = new GregorianCalendar() def dateForma ...
 - maven  web 项目  打入 jar 包 , 和编译入  java 文件到 web-inf  下
			
<outputDirectory>src\main\webapp\WEB-INF\classes</outputDirectory> 可以把 类文件编译到 web-inf 下 ...
 - 去掉字符串前后的空格和Tab
			
<script language=Javascript>function String.prototype.Trim() {return this.replace(/(^\s*)|(\s* ...
 - 讲讲我在Windows10(uwp)开发中遇到的一些坑.
			
7月29日发布的Windows10正式版,当天安装好以后,在网络不太好的情况下,经过多次尝试终于装上了Visual Studio 2015和Windows 10 10240的SDK.这两周一直在开发U ...
 - 2018.09.25 bzoj1856: [Scoi2010]字符串(组合数学)
			
传送门 如果有n==m的条件就是卡特兰数. 但现在n不一定等于m. 我们可以考虑用求卡特兰数一样的方法来求答案. 我们知道有一种求卡特兰数的方法是转到二维平面求答案. 这道题就可以这样做. 我们将这个 ...
 - Unit Testing of Spring MVC Controllers1
			
我们的pom.xml文件相关的部分看起来如下: <dependency> <groupId>com.fasterxml.jackson.core</groupId& ...
 - Nginx的两种负载均衡搭建(Tomcat版)
			
前言 Nginx的负载均衡一般采用upstream来实现,但是,还有另一种文件拓展的方式,同样可以实现负载均衡. 一.一般的负载均衡 upstream my_server { server local ...
 - WriteableBitmap(三) 扩展
			
backbuffer使用您在创建WriteableBitmap时指定的像素格式,还有一个BackBufferStride属性,您可以使用它来创建一个合适的存储映射函数. 添加一些方法来设置和获取特定情 ...
 - matlab练习程序(生成希尔伯特曲线)
			
能够使用这样一条线遍历图像中所有的像素,不过这里没有这样做,而只是生成了这样一条曲线. 程序中h,w是最终图像的高和宽,n为希尔伯特曲线阶数. 这里如果n等于log2(h)或log2(w),则图像就全 ...