对象的类一定要加无参构造方法,底层反射时要用。
一、生产者
package cn.edu.tju.test1;
import org.apache.pulsar.client.api.*;
import org.apache.pulsar.client.impl.schema.AvroSchema;
public class BasicProducer03 {
private static String SERVER_4 = "xx.xx.x.xx";
public static void main(String[] args) throws PulsarClientException {
PulsarClient client = PulsarClient.builder()
.serviceUrl("pulsar://" + SERVER_4 + ":6650")
.build();
AvroSchema<UserInfo> schema = AvroSchema.of(UserInfo.class);
Producer<UserInfo> stringProducer = client.newProducer(schema)
.topic("my-topic3")
.create();
UserInfo userInfo = new UserInfo("username","pwd");
stringProducer.send(userInfo);
stringProducer.close();
client.close();
System.out.println("对象发送完成");
}
private static class UserInfo{
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public UserInfo(String username, String password) {
this.username = username;
this.password = password;
}
public UserInfo() {
}
}
}
二、消费者
package cn.edu.tju.test1;
import org.apache.pulsar.client.api.*;
import org.apache.pulsar.client.impl.schema.AvroSchema;
public class BasicConsumer03 {
private static String SERVER_4 = "xx.xx.xx.xx";
public static void main(String[] args) throws Exception{
PulsarClient client = PulsarClient.builder()
.serviceUrl("pulsar://" + SERVER_4 + ":6650")
.build();
AvroSchema<UserInfo> schema = AvroSchema.of(UserInfo.class);
MessageListener<UserInfo> myMessageListener = new MessageListener() {
@Override
public void received(Consumer consumer, Message msg) {
try {
System.out.println("Message received: " + msg.getValue());
consumer.acknowledge(msg);
} catch (Exception e) {
consumer.negativeAcknowledge(msg);
}
}
};
Consumer<UserInfo> consumer = client.newConsumer(schema)
.topic("my-topic3")
.subscriptionName("my-subscription")
.messageListener(myMessageListener)
.subscribe();
}
private static class UserInfo{
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public UserInfo() {
}
public UserInfo(String username, String password) {
this.username = username;
this.password = password;
}
@Override
public String toString() {
return "UserInfo{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
}
package cn.edu.tju.test1;
import org.apache.pulsar.client.api.*;
import org.apache.pulsar.client.impl.schema.AvroSchema;
public class BasicConsumer04 {
private static String SERVER_4 = "xx.xx.xx.xx";
public static void main(String[] args) throws Exception{
PulsarClient client = PulsarClient.builder()
.serviceUrl("pulsar://" + SERVER_4 + ":6650")
.build();
AvroSchema<UserInfo> schema = AvroSchema.of(UserInfo.class);
Consumer consumer = client.newConsumer(schema)
.topic("my-topic3")
.subscriptionName("my-subscription")
.subscribe();
while (true){
Message message = consumer.receive();
try {
System.out.println("Message received: " + message.getValue());
consumer.acknowledge(message);
} catch (Exception e) {
consumer.negativeAcknowledge(message);
System.out.println(e.getMessage());
}
}
}
private static class UserInfo{
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public UserInfo() {
}
public UserInfo(String username, String password) {
this.username = username;
this.password = password;
}
@Override
public String toString() {
return "UserInfo{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
}