pulsar学习笔记1:helloworld

pulsar号称是下一代的消息系统,这二年风光无限,大有干掉kafka的势头,如果想快速体验下,可以按以下步骤在本地搭建一个单机版本:(mac环境+jdk8)

 

一、 下载

wget https://www.apache.org/dyn/mirrors/mirrors.cgi?action=download&filename=pulsar/pulsar-2.3.2/apache-pulsar-2.3.2-bin.tar.gz

目前最新版本是2.3.2 

 

二、解压

tar -zxvf apache-pulsar-2.3.2-bin.tar.gz

  

三、单机模式启动

cd apache-pulsar-2.3.2
bin/pulsar standalone

  

四、 测试收发消息

pulsar自带的client工具,可以直接测试收发消息。

收消息命令如下:

bin/pulsar-client consume my-topic -s "first-subscription"

表示从“my-topic”这个topic上消费消息,并且指定订阅名称为“first-subscription”

 

发消息命令如下:

bin/pulsar-client produce my-topic --messages "hello pulsar"

表示发送消息到my-topic这个topic上。

注:测试时,可以单独开2个terminal,先在其中1个运行consumer,然后在另1个运行produce

附:如果希望写java代码实现收发消息,可参考https://github.com/yjmyzz/pulsar-sample

 

五、 Function测试

function是一个极有前途的功能,可以把一个topic中喷出的消息,实时接收并处理后,再把处理结果发到另一个topic,相当于轻量级的流式计算。

./examples目录下有一个api-examples.jar包,里面自带了一些Function示例。

5.1 部署Function

部署的过程,其实就是把带处理逻辑的jar包,放到集群上,命令如下:

bin/pulsar-admin functions create \
--jar examples/api-examples.jar \
--className org.apache.pulsar.functions.api.examples.ExclamationFunction \
--inputs persistent://public/default/exclamation-input \
--output persistent://public/default/exclamation-output \
--name exclamation

大致是创建一个function,来源是examples/api-examples.jar这个文件,并指定了具体的类名(因为一个jar包中,可以写多个function,必须指定具体的className), 然后这个function的入参是exclamation-input这个topic,处理完的结果,将输出到exclamation-output,最后这个function在pulsar中的名字是exclamation - 注:如果上述命令执行失败,可以尝试把className,换成classname. (不同版本的pulsar这个参数的大小写略有不同)

附:ExclamationFunction的java源码如下,逻辑很简单,只是在输入参数后加一个!

package org.apache.pulsar.functions.api.examples;

import java.util.function.Function;

public class ExclamationFunction implements Function<String, String> {
    @Override
    public String apply(String input) {
        return String.format("%s!", input);
    }
}

  

5.2 查看已部署的function列表

bin/pulsar-admin functions list \
--tenant public \
--namespace default

 

5.3 启动消费者,查看实时处理结果   

bin/pulsar-client consume persistent://public/default/exclamation-output \
--subscription-name my-subscription \
--num-messages 0

  

5.4 启动生产者,产生实时处理所需的素材

bin/pulsar-client produce persistent://public/default/exclamation-input \
--num-produce 1 \
--messages "Hello world"

  

参考文章:

http://pulsar.apache.org/docs/en/functions-quickstart/

posted @ 2019-06-23 21:30  菩提树下的杨过  阅读(3293)  评论(0编辑  收藏  举报