Apache-Pulsar 模式没有方法 builder()

Posted

技术标签:

【中文标题】Apache-Pulsar 模式没有方法 builder()【英文标题】:Apache-Pulsar schema doesn't have method builder() 【发布时间】:2021-11-20 14:56:21 【问题描述】:

我正在尝试在 struct/SchemaDefinition 下复制示例 here。我想将我的消息的架构定义为一个名为 Davis 的类,其定义如下:

package com.example.streaming;

import lombok.Builder;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;

import java.sql.Timestamp;

@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Davis 
    Timestamp timestamp;
    float temperature;

我已经从 Lombok project 导入了注释,我不知道这是否正确,但 Pulsar 的文档在这里有点差.. 我的制作人班是这样的

import org.apache.pulsar.client.api.*;
import org.apache.pulsar.client.impl.schema.JSONSchema;
import java.io.IOException;

public class DavisProducer 

    public static void main(String[] args) throws IOException 
        PulsarGetPropertyValues properties = new PulsarGetPropertyValues();
        properties.getPropValues();

        PulsarClient client = PulsarClient.builder()
                .serviceUrl(properties.getProperty("pulsar.service_url"))
                .authentication(
                        AuthenticationFactory.token(properties.getProperty("pulsar.token"))
                )
                .build();

        Producer<Davis> producer = client.newProducer(JSONSchema.of(Davis.class))
                .topic(properties.getProperty("pulsar.topic"))
                .create();

        // Send a message to the topic
        producer.newMessage().value(Davis.builder()
                .timestamp(sometimestamp)
                .temp_out((float) 18.5556)
                .build()).send();

        producer.close();

        client.close();

    

代码无法编译,因为Davis 没有方法builder()。我错过了什么?

【问题讨论】:

【参考方案1】:

我有另一种方法可以做到这一点。看看你喜不喜欢这种风格:

https://github.com/tspannhw/StreamingAnalyticsUsingFlinkSQL/blob/main/src/main/java/IoTProducer.java

https://github.com/tspannhw/StreamingAnalyticsUsingFlinkSQL/blob/main/src/main/java/IoTMessage.java

要在一个地点接触所有 Pulsar 人,请注册参加峰会

https://streamnative.io/en/blog/community/2021-09-07-speakers-announced-for-pulsar-virtual-summit-europe-2021/

【讨论】:

谢谢蒂姆,这太棒了!在您的示例中,您是否遵循pulsar.apache.org/docs/en/client-libraries-java/… 中解释的准则? 我使用 StreamNative 示例作为我的启动器,这似乎效果很好。 github.com/streamnative/examples/tree/master/cloud/java/src/…【参考方案2】:

问题是 Lombok Project 没有作为 compileOnly Gradle (v7.1) 的依赖项包含在内。

在https://***.com/a/55227788/14314060找到答案

【讨论】:

以上是关于Apache-Pulsar 模式没有方法 builder()的主要内容,如果未能解决你的问题,请参考以下文章

Apache-Pulsar Java 客户端可以在 RaspberryPi4 (ARMv8) 上运行吗?

设计模式--建造者模式C++实现

JavaWeb:报错信息The superclass "javax.servlet.http.HttpServlet" was not found on the Java Buil

打开Myeclipse时遇到了如下报错: ‘Building workspace’ has encountered a problem. Errors occurred during the buil

SVN打基线方法

python va-buil-all.py