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) 上运行吗?
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