zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    各种有趣言论收集
    人类未来进化方向恶考
    mysql 列所有表行数
    恩,有那么一个人
    00后厉害哇
    。。。。
    放弃微博,继续回来写月经
    嘿,大家还好吗
    git
    require js
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/pulsar-helloworld.html
Copyright © 2011-2022 走看看