- 定义redis发布消息方法
/**
* redis消息发布,stream为redis通道,保证发布和订阅的通道名称一致
*
*/
public class MessageSender {
public static void sendMessage(StringRedisTemplate stringRedisTemplate, String msg) {
try {
stringRedisTemplate.convertAndSend("stream", msg);
} catch (Exception e) {
e.printStackTrace();
}
}
}
- 配置redis消息监听器
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.listener.PatternTopic;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.data.redis.listener.adapter.MessageListenerAdapter;
@Configuration
public class RedisConfig {
/**
* redis消息监听器容器
* @param connectionFactory
* @param listenerAdapter
* @return
*/
@Bean
RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory, MessageListenerAdapter listenerAdapter) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
//可添加多个 MessageListener
container.addMessageListener(listenerAdapter, new PatternTopic("stream"));
return container;
}
/**
* HandleClass为消息处理类,业务直接写在处理类中的handleMethod方法中即可
* @param
* @return
*/
@Bean
MessageListenerAdapter listenerAdapter(HandleClass handleclass) {
return new MessageListenerAdapter(handleclass, "handleMethod");
}
}
3.消息处理类
public class HandleClass{
public void handleMethod(String msg){
//处理业务
}
}