首页 > java > java spring redis 消息发布与监听

java spring redis 消息发布与监听

作者:bin

短信、邮件、微信等通知,常常会用到发布订阅模式。
发布者发布消息后,订阅者根据消息去做对应等事情,比如一个订单购买成功的通知发布后,短信、邮件、微信等订阅者消费消息,并且推送给用户。

那么我们在java spring中如何使用呢?

首先注册一个Redis消息监听器,这里使用@Component注解,所以Spring Boot扫描到后,会将其装配置IoC容器中。

@Component
public class RedisMessageListener implements MessageListener {
  @Override
  public void onMessage(Message message, byte[] pattern) {
    //消息体
    String body = new String(message.getBody());
    //主题名称
    String topic = new String(pattern);
    System.out.println(body);
    System.out.pringln(topic);
  }
}

然后我们Spring中去使用上面创建的监听器

//自动装配上面的监听器组件
@Autowired
private MessageListener redisMessageListener

@Configuration
public class RedisListenerConfig{
    @Bean
    RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,
                                             MessageListenerAdapter listenerAdapter) {
        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        //其中ChannelTopic为指定频道订阅,PatternTopic为模糊匹配
        container.addMessageListener(redisMessageListener, new ChannelTopic("Topic1"));
        return container;
    }
}

这样,我们使用如下命令进行消息发布时:

publish topic1 msg

或者在spring中

redisTemplate.convertAndSend(channel, message)

可以在监听器中的System.out中得到结果消息

您必须 [ 登录 ] 才能发表留言!