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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值