Pulsar Function 例子
admin
2023-01-23 10:01:14
0

在单机环境下实现字符串追加函数(Pulsar 2.4.2版本)

1 启动单机Pulsar

     $ bin/pulsar-daemon start standalone

2 创建函数

1) 准备环境

    项目引用 compile 'org.apache.pulsar:pulsar-functions-api:2.4.2'

2) 创建JAVA函数(此函数用于数据源来的topic schema是string,输出的tiopic schema是string)

     Pulsar Function 例子

     导出jar包,放到pulsar服务器目录下,本例子放在 /data/jar/下

3)使用命令行工具加载函数到Pulsar,                     

   bin/pulsar-admin functions create \

   --classname test.AppStrFunction \

   --jar /data/jar/pf.jar \

   --inputs persistent://public/default/tlstest \

   --output persistent://public/default/teststr \

   --tenant public \

   --namespace default \

   --name appStrFunction

   参数说明:

                     

参数
说明
functions通知 pulsar broker,函数操作
create创建函数,默认创建成功后启动
classname函数类名称,需要加上包名
jar指定 jar 包的运行路径
inputs指定 函数 数据的来源在哪里,支持多个 topics 作为输入
output如果该 函数 有输出(有些情况下,function 没有输出),指定 function 输出的 topic,只能有一个输出
tenant指定该 函数 运行的租户名
namespace指定该 函数 运行的命名空间
name指定该 函数 运行的名称
以下是函数相关其他操作

停止函数

bin/pulsar-admin functions stop \

--tenant public \

--namespace default \

--name appStrFunction

启动函数

bin/pulsar-admin functions start \

--tenant public \

--namespace default \

--name appStrFunction

删除函数

bin/pulsar-admin functions delete \

--tenant public \

--namespace default \

--name appStrFunction

函数的日志在 pulsar安装目录 /logs/functions下

3 测试函数

   根据前边函数已成功加载启动

1)向tlstest主题发送消息   

import java.util.concurrent.TimeUnit;
import org.apache.pulsar.client.api.Producer;
import org.apache.pulsar.client.api.PulsarClient;
import org.apache.pulsar.client.api.Schema;
public class SendMsgTest{
  public static void main(String[] args){
      String url="pulsar://192.168.1.48:6650";
  try{
     PulsarClient client =PulsarClient.builder()
           .serviceUrl(url)
           .connectionTimeout(10,TimeUnit.SECONDS)
           .build();
     Producer producer=client.newProducer(Schema.STRING)
           .topic("tlstest")
           .sendTimeout(10,TimeUnit.SECONDS)
           .producerName("senduser")
           .create();
           producer.send("this is a book");
           System.out.print("send ok");
           client.close();
      }catch(Exception e){
        e.printStackTrace();
      }
  }
}

2)读取teststr主题消息

   

import org.apache.pulsar.client.api.Consumer;
import org.apache.pulsar.client.api.Message;
import org.apache.pulsar.client.api.PulsarClient;
import org.apache.pulsar.client.api.Schema;
import org.apache.pulsar.client.api.SubscriptionInitialPosition;
import org.apache.pulsar.client.api.SubscriptionType;
import org.apache.pulsar.client.impl.schema.JSONSchema;
import schema.OrderModel;
import com.alibaba.fastjson.JSON;
public class RecFunTest {
public static void main(String[] args) {
String url = "http://192.168.1.48:8080";
try{
  PulsarClient client =PulsarClient.builder()
    .serviceUrl(url)
    .build();
 Consumer consumer=client.newConsumer(Schema.STRING)
    .topic("teststr")
    .subscriptionInitialPosition(SubscriptionInitialPosition.Earliest)
    .subscriptionType(SubscriptionType.Exclusive)//订阅模式  Exclusive(独占,默认模式) Failover(灾备)Shared(共享)
    .subscriptionName("wbq")//订阅者名称
    .subscribe();
 while (true) {
   Message mondmsg = consumer.receive();
   String msg=mondmsg.getValue();
                System.out.println("receive message=:"+msg);
             }
  }catch(Exception e){
     e.printStackTrace();
  }
 }
}


相关内容

热门资讯

弗朗茨别墅家用电梯获德国莱茵T... 在别墅家用电梯行业从“功能满足”迈向“品质生活”的转型期,一个品牌的战略定力往往决定了它能走多远。弗...
一元复始 万象AI!2026智... 7月22日,2026人工智能产品应用博览会(以下简称“2026智博会”)新闻发布会在苏州工业园区举行...
怕失焦?蓝白周六上凯道反毒油,... 中联毒油案引发全台民众食安疑虑,国民党发起25日上凯道抗争,当天一早将先举行全代会,晚间6点前往凯道...
原创 为... 把一只穴兔和一只野兔摆在一起,长耳朵短尾巴,普通人根本分不出谁是谁。可就是这两只看着一模一样的兔子,...
AMD推出Helios机架AI... 据香港IDC新天域互联了解,历经十年技术深耕,芯片巨头AMD正式推出首款机架级AI系统Helios,...
原创 卡... 在高端新材料圈子里,碳纤维一直有个响亮外号——黑色黄金。轻得像羽毛,硬度远超钢材,航空航天、飞行器、...
iPhone 18 Pro系列... 快科技7月22日消息,据最新爆料,iPhone 18 Pro和iPhone 18 Pro Max将沿...
普京:困难是暂时的 在乌克兰利用无人机持续打击俄境内能源设施的背景下,俄罗斯总统普京在克里姆林宫召开经济问题会议。俄新社...
“打压中企,欧盟将自损400亿... 当地时间7月22日,美国“政客新闻网”欧洲版(POLITIO EU)援引知名行业机构全球移动通信系统...
蓝营青年绝食抗议毒油,“独派”... 图注:民众党议员陈世轩22日率新北队议员参选人声援4位蓝营绝食者。中国台湾网7月22日讯 为抗议民进...