pulsar:发送和接收对象类型的消息

对象的类一定要加无参构造方法,底层反射时要用。
一、生产者

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 + '\'' +
                    '}';
        }
    }
}


  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值