Java 如何将模式获取为用于在Redis PubSub中发布消息的字符串
我正在使用下面的代码。模式为byte[]类型。必须将模式作为业务逻辑的字符串。有没有办法得到它!必须使发布者或订阅主题名动态Java 如何将模式获取为用于在Redis PubSub中发布消息的字符串,java,spring-boot,redis,publish-subscribe,spring-data-redis,Java,Spring Boot,Redis,Publish Subscribe,Spring Data Redis,我正在使用下面的代码。模式为byte[]类型。必须将模式作为业务逻辑的字符串。有没有办法得到它!必须使发布者或订阅主题名动态 public class RedisConfig { @Bean JedisConnectionFactory jedisConnectionFactory() { JedisConnectionFactory jedis = new JedisConnectionFactory(); jedis.setHostName(
public class RedisConfig {
@Bean
JedisConnectionFactory jedisConnectionFactory() {
JedisConnectionFactory jedis = new JedisConnectionFactory();
jedis.setHostName("xxxxxx.redis.cache.windows.net");
jedis.setPassword("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=");
jedis.setPort(6379);
return jedis;
}
@Bean
public RedisTemplate<String, Object> redisTemplate() {
final RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
template.setConnectionFactory(jedisConnectionFactory());
template.setValueSerializer(new GenericToStringSerializer<Object>(Object.class));
return template;
}
@Bean
MessageListenerAdapter messageListener() {
return new MessageListenerAdapter(new CustomerInfoSubscriber());
}
@Bean
RedisMessageListenerContainer redisContainer() {
final RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(jedisConnectionFactory());
container.addMessageListener(messageListener(), new PatternTopic("*/*"));
container.setTaskExecutor(Executors.newFixedThreadPool(4));
return container;
}
虽然为时已晚,且已在评论中提及,但我认为应将其明确,以供将来参考:
System.out.println(new String(pattern, StandardCharsets.UTF_8));
需要在listener类中获取“testing/1”。需要这方面的帮助。假设字节数组对应一个字符串,您可以简单地使用
新字符串(字节,编码)
-如果我使用System.out.println(新字符串(模式)),我会得到“*/*”(用于注册侦听器)。但是我需要得到“testing/1”(用于发布消息)
public class CustomerInfoSubscriber implements MessageListener {
@Override
public void onMessage(Message message, byte[] pattern) {
System.out.println(" ::::: Pattern 1 is " + pattern.toString() + " ::::: ");
System.out.println(" ::::: Pattern 2 is " + Arrays.toString(pattern) + " ::::: ");
System.out.println("Received >> " + message + ", " + Thread.currentThread().getName() );
}
}
System.out.println(new String(pattern, StandardCharsets.UTF_8));