无法使用redis pub sub接收java对象

uqxowvwt  于 2021-06-09  发布在  Redis
关注(0)|答案(0)|浏览(184)

我遵循本页的教程https://spring.io/guides/gs/messaging-redis/ 我能够在发布者和订阅者之间交换字符串消息,但是当我试图发送java对象时,我的接收者没有接收到它。如何使用redis pub-sub交换java对象。我的代码:
appconfig.java文件

@Configuration
@Slf4j
public class AppConfig {

@Bean
RedisMessageListenerContainer container(RedisConnectionFactory redisConnectionFactory, MessageListenerAdapter studentListenerAdaptor){
    RedisMessageListenerContainer container = new RedisMessageListenerContainer();
    container.setConnectionFactory(redisConnectionFactory);
    container.addMessageListener(studentListenerAdaptor, new PatternTopic("student"));;
    return container;
}

@Bean
MessageListenerAdapter studentListenerAdaptor(StudentReceiver studentReceiver) {
    return new MessageListenerAdapter(studentReceiver, "receiveStudent");
}

@Bean
StudentReceiver studentReceiver(){
    return new StudentReceiver();
}

@Bean
RedisTemplate<String, Student> redisTemplate(RedisConnectionFactory redisConnectionFactory){
    RedisTemplate<String, Student> redisTemplate = new RedisTemplate<>();
    redisTemplate.setConnectionFactory(redisConnectionFactory);
    redisTemplate.setValueSerializer(RedisSerializer.java());
    return redisTemplate;
}
}

studentreceiver.java文件

public class StudentReceiver {

    public void receiveStudent(Student student){
        log.info("student-receiver => {}",student.toString());
    }
}

学生.java

@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
@EqualsAndHashCode
public class Student implements Serializable {
    String name;
    Integer age;
}

apprunner.java文件

public class AppRunner implements CommandLineRunner {
    final RedisTemplate<String, Student> redisTemplate;

    public AppRunner(RedisTemplate<String, Student> redisTemplate) {
        this.redisTemplate = redisTemplate;
    }

    @Override
    public void run(String... args) throws Exception {
        log.info("========= welcome to redis pub-sub project ===========");
        for(int i=0;i<10;i++){
            redisTemplate.convertAndSend("student", getStudent());
            Thread.sleep(100L);
        }
    }

    private Student getStudent() {
        Student student = new Student();
        student.setAge(new Random().nextInt());
        student.setName(UUID.randomUUID().toString());
        return student;
    }
}

我可以看到发布者发布消息,但接收者没有接收到它们,因为我在监视模式下运行redis。
我的输出:

2020-11-23 21:14:25.534  INFO 19500 --- [  restartedMain] m.t.redispub.sub.RedisPubSubApplication  : No active profile set, falling back to default profiles: default
2020-11-23 21:14:25.583  INFO 19500 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
2020-11-23 21:14:26.004  INFO 19500 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
2020-11-23 21:14:26.007  INFO 19500 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode.
2020-11-23 21:14:26.027  INFO 19500 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 7 ms. Found 0 Redis repository interfaces.
2020-11-23 21:14:26.609  INFO 19500 --- [  restartedMain] o.s.b.d.a.OptionalLiveReloadServer       : LiveReload server is running on port 35729
2020-11-23 21:14:27.035  INFO 19500 --- [  restartedMain] m.t.redispub.sub.RedisPubSubApplication  : Started RedisPubSubApplication in 1.905 seconds (JVM running for 2.994)
2020-11-23 21:14:27.038  INFO 19500 --- [  restartedMain] me.thinkin.redispub.sub.AppRunner        : ========= welcome to redis pub-sub project ===========

redis监视器上的消息

1606184066.842081 [0 127.0.0.1:38298] "PING"
1606184066.923255 [0 127.0.0.1:38300] "PING"
1606184066.935420 [0 127.0.0.1:38300] "SUBSCRIBE" "student"
1606184066.964245 [0 127.0.0.1:38298] "PUBLISH" "student" "\xac\xed\x00\x05sr\x00(me.thinkin.redispub.sub.entities.Student:\x8d&H\xab\xa2\x8b\xbc\x02\x00\x02L\x00\x03aget\x00\x13Ljava/lang/Integer;L\x00\x04namet\x00\x12Ljava/lang/String;xpsr\x00\x11java.lang.Integer\x12\xe2\xa0\xa4\xf7\x81\x878\x02\x00\x01I\x00\x05valuexr\x00\x10java.lang.Number\x86\xac\x95\x1d\x0b\x94\xe0\x8b\x02\x00\x00xp\x1c\xe3\xf8mt\x00$4c347a07-ab82-40c6-a905-58df23e5a6c2"
1606184067.066939 [0 127.0.0.1:38298] "PUBLISH" "student" "\xac\xed\x00\x05sr\x00(me.thinkin.redispub.sub.entities.Student:\x8d&H\xab\xa2\x8b\xbc\x02\x00\x02L\x00\x03aget\x00\x13Ljava/lang/Integer;L\x00\x04namet\x00\x12Ljava/lang/String;xpsr\x00\x11java.lang.Integer\x12\xe2\xa0\xa4\xf7\x81\x878\x02\x00\x01I\x00\x05valuexr\x00\x10java.lang.Number\x86\xac\x95\x1d\x0b\x94\xe0\x8b\x02\x00\x00xpN\xcdudt\x00$a462fa00-e490-4566-8288-2c52068192e6"
1606184067.177872 [0 127.0.0.1:38298] "PUBLISH" "student" "\xac\xed\x00\x05sr\x00(me.thinkin.redispub.sub.entities.Student:\x8d&H\xab\xa2\x8b\xbc\x02\x00\x02L\x00\x03aget\x00\x13Ljava/lang/Integer;L\x00\x04namet\x00\x12Ljava/lang/String;xpsr\x00\x11java.lang.Integer\x12\xe2\xa0\xa4\xf7\x81\x878\x02\x00\x01I\x00\x05valuexr\x00\x10java.lang.Number\x86\xac\x95\x1d\x0b\x94\xe0\x8b\x02\x00\x00xp\xa1\"\xc8\xb0t\x00$d4da49ce-aceb-4852-a45a-ec23712d2d51"
1606184067.286444 [0 127.0.0.1:38298] "PUBLISH" "student" "\xac\xed\x00\x05sr\x00(me.thinkin.redispub.sub.entities.Student:\x8d&H\xab\xa2\x8b\xbc\x02\x00\x02L\x00\x03aget\x00\x13Ljava/lang/Integer;L\x00\x04namet\x00\x12Ljava/lang/String;xpsr\x00\x11java.lang.Integer\x12\xe2\xa0\xa4\xf7\x81\x878\x02\x00\x01I\x00\x05valuexr\x00\x10java.lang.Number\x86\xac\x95\x1d\x0b\x94\xe0\x8b\x02\x00\x00xp\x86\xe9\xd6\xb2t\x00$e41afe02-7caa-4415-a534-ab5c0a7544ff"
1606184067.396610 [0 127.0.0.1:38298] "PUBLISH" "student" "\xac\xed\x00\x05sr\x00(me.thinkin.redispub.sub.entities.Student:\x8d&H\xab\xa2\x8b\xbc\x02\x00\x02L\x00\x03aget\x00\x13Ljava/lang/Integer;L\x00\x04namet\x00\x12Ljava/lang/String;xpsr\x00\x11java.lang.Integer\x12\xe2\xa0\xa4\xf7\x81\x878\x02\x00\x01I\x00\x05valuexr\x00\x10java.lang.Number\x86\xac\x95\x1d\x0b\x94\xe0\x8b\x02\x00\x00xpo\a^Gt\x00$801148b9-3db0-4356-b5a5-b096356b308e"
1606184067.506466 [0 127.0.0.1:38298] "PUBLISH" "student" "\xac\xed\x00\x05sr\x00(me.thinkin.redispub.sub.entities.Student:\x8d&H\xab\xa2\x8b\xbc\x02\x00\x02L\x00\x03aget\x00\x13Ljava/lang/Integer;L\x00\x04namet\x00\x12Ljava/lang/String;xpsr\x00\x11java.lang.Integer\x12\xe2\xa0\xa4\xf7\x81\x878\x02\x00\x01I\x00\x05valuexr\x00\x10java.lang.Number\x86\xac\x95\x1d\x0b\x94\xe0\x8b\x02\x00\x00xp\xa1\xbe\xcdLt\x00$c676aa14-c688-4b3a-9000-7676ebda80d7"
1606184067.615669 [0 127.0.0.1:38298] "PUBLISH" "student" "\xac\xed\x00\x05sr\x00(me.thinkin.redispub.sub.entities.Student:\x8d&H\xab\xa2\x8b\xbc\x02\x00\x02L\x00\x03aget\x00\x13Ljava/lang/Integer;L\x00\x04namet\x00\x12Ljava/lang/String;xpsr\x00\x11java.lang.Integer\x12\xe2\xa0\xa4\xf7\x81\x878\x02\x00\x01I\x00\x05valuexr\x00\x10java.lang.Number\x86\xac\x95\x1d\x0b\x94\xe0\x8b\x02\x00\x00xp*\x17\xf5\xe6t\x00$f533e6b5-c0ba-4ae6-8439-1b737104e3e7"
1606184067.727592 [0 127.0.0.1:38298] "PUBLISH" "student" "\xac\xed\x00\x05sr\x00(me.thinkin.redispub.sub.entities.Student:\x8d&H\xab\xa2\x8b\xbc\x02\x00\x02L\x00\x03aget\x00\x13Ljava/lang/Integer;L\x00\x04namet\x00\x12Ljava/lang/String;xpsr\x00\x11java.lang.Integer\x12\xe2\xa0\xa4\xf7\x81\x878\x02\x00\x01I\x00\x05valuexr\x00\x10java.lang.Number\x86\xac\x95\x1d\x0b\x94\xe0\x8b\x02\x00\x00xp\xe8\xcc\xd8\xfet\x00$cf50a9e8-3460-406b-ae27-abf83ef4dcde"
1606184067.838117 [0 127.0.0.1:38298] "PUBLISH" "student" "\xac\xed\x00\x05sr\x00(me.thinkin.redispub.sub.entities.Student:\x8d&H\xab\xa2\x8b\xbc\x02\x00\x02L\x00\x03aget\x00\x13Ljava/lang/Integer;L\x00\x04namet\x00\x12Ljava/lang/String;xpsr\x00\x11java.lang.Integer\x12\xe2\xa0\xa4\xf7\x81\x878\x02\x00\x01I\x00\x05valuexr\x00\x10java.lang.Number\x86\xac\x95\x1d\x0b\x94\xe0\x8b\x02\x00\x00xpd\xbbq\xabt\x00$8a4f8549-4718-4525-89f8-79f22aeae8f8"
1606184067.948731 [0 127.0.0.1:38298] "PUBLISH" "student" "\xac\xed\x00\x05sr\x00(me.thinkin.redispub.sub.entities.Student:\x8d&H\xab\xa2\x8b\xbc\x02\x00\x02L\x00\x03aget\x00\x13Ljava/lang/Integer;L\x00\x04namet\x00\x12Ljava/lang/String;xpsr\x00\x11java.lang.Integer\x12\xe2\xa0\xa4\xf7\x81\x878\x02\x00\x01I\x00\x05valuexr\x00\x10java.lang.Number\x86\xac\x95\x1d\x0b\x94\xe0\x8b\x02\x00\x00xpj\xdb\xc02t\x00$6a8767f0-6b63-4e36-b6fc-e2a15d537d1f"

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题