我遵循本页的教程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"
暂无答案!
目前还没有任何答案,快来回答吧!