Redis跨系统消息发布订阅(一)

spring-data-redis实现跨系统消息发布与订阅

以下例子的使用环境:
1.spring-boot 2.1.6
2.spring-boot-starter-data-redis 2.1.6
3.系统A,系统B,使用同一个redis服务器。
4.系统A为发布者,系统B为订阅者(消费者)
引入依赖:https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis

	<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <version>2.1.6.RELEASE</version>
    </dependency>

系统A的代码

在你需要发送消息的业务方法中,调用以下方法 sendMsgToRedis

	@Autowired
    private StringRedisTemplate stringRedisTemplate;
	/**
     * 发布消息 
     * @param topic
     * @param object
     */
    public void sendMsgToRedis(String topic, Object object) {
        stringRedisTemplate.convertAndSend(topic, object);
    }

B系统 订阅A系统的消息

/**
 * 说明:
 * redis 消息监听配置
 * @author yh
 **/
@Component
public class RedisListenerConfig {
    private Logger logger = LoggerFactory.getLogger(this.getClass());
    @Autowired
    private SyncDocumentService syncDocumentService;
    @Bean
    RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,
                                            MessageListenerAdapter listenerAdapter) {
        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        //下面的topic与系统A
        container.addMessageListener(listenerAdapter, new PatternTopic(RedisMsgType.REDIS_DOCUMENT_SYNC_TOPIC.getRedisKey()));
        return container;
    }

    @Bean
    MessageListenerAdapter listenerAdapter() {
        //使用下面service中的handleMessage
        return new MessageListenerAdapter(syncDocumentService, "handleMessage");
    }

}
//SyncDocumentService 中的handleMessage方法定义:
@Service
public class SyncDocumentService {
    private Logger logger = LoggerFactory.getLogger(this.getClass());
    
    public void handleMessage(String jsonStr) {
        logger.info("文档同步消息订阅频道有新消息进来,参数:{}", jsonStr);
        logger.info(jsonStr);
        //开始处理同步业务逻辑
    }
}

地址二

https://blog.csdn.net/a754921384/article/details/101521444

猜你喜欢

转载自blog.csdn.net/u014635374/article/details/108742382