您现在的位置是:主页 > news > 企业网站价格多少钱/专业做网站设计

企业网站价格多少钱/专业做网站设计

admin2025/6/1 1:04:54news

简介企业网站价格多少钱,专业做网站设计,代运营是如何骗人的,明星粉丝网站怎么做简介 Redisson提供给开发者使用的另一个高性能功能组件--发布-订阅式的主题,可实现类似消息中间件RabbitMQ的消息通信的功能,实际应用有:服务模块解耦、消息通信等业务模块中,可以说是Redisson在构建分布式应用系统中的有一大利器…

企业网站价格多少钱,专业做网站设计,代运营是如何骗人的,明星粉丝网站怎么做简介 Redisson提供给开发者使用的另一个高性能功能组件--发布-订阅式的主题,可实现类似消息中间件RabbitMQ的消息通信的功能,实际应用有:服务模块解耦、消息通信等业务模块中,可以说是Redisson在构建分布式应用系统中的有一大利器…

简介

Redisson提供给开发者使用的另一个高性能功能组件--发布-订阅式的主题,可实现类似消息中间件RabbitMQ的消息通信的功能,实际应用有:服务模块解耦消息通信等业务模块中,可以说是Redisson在构建分布式应用系统中的有一大利器。与消息中间件RabbitMQ的基本消息模型类似,Redisson的基于发布-订阅式主题主要由3大部分组成,即生产者、消费者和消息。生产者将消息以主题的形式发布,而消费者只需要订阅相应的主题,即可实现自动监听消费处理消息。

代(上)码(菜)

生产者

/*** 记录用户登录成功后的轨迹-生产者*/
@Component
public class UserLoginPublisher {//定义日志private static final Logger log= LoggerFactory.getLogger(UserLoginPublisher.class);//构造基于发布-订阅式主题的Keyprivate static final String topicKey="redissonUserLoginTopicKey";//构造Redisson客户端操作实例@Autowiredprivate RedissonClient redissonClient;/*** 异步发送消息* @param dto*/public void sendMsg(UserLoginDto dto){try {//判断消息对象是否为nullif (dto != null){log.info("记录用户登录成功后的轨迹-生产者-发送消息:{} ", dto);//创建主题RTopic rTopic=redissonClient.getTopic(topicKey);//发布消息rTopic.publishAsync(dto);}}catch (Exception e){log.error("记录用户登录成功后的轨迹-生产者-发生异常:{}", dto, e.fillInStackTrace());}}
}

消费者

/*** 记录用户登录成功后的轨迹-消费者*/
@Component
public class UserLoginSubscriber implements ApplicationRunner,Ordered{//定义日志private static final Logger log= LoggerFactory.getLogger(UserLoginSubscriber.class);//构造基于发布-订阅式主题的Keyprivate static final String topicKey="redissonUserLoginTopicKey";//构造Redisson客户端操作实例@Autowiredprivate RedissonClient redissonClient;/*** 在这个方法里实现“不断地监听该主题中消息的动态” - 即间接地实现自动监听消费* @param arguments* @throws Exception*/@Overridepublic void run(ApplicationArguments arguments) throws Exception {try {RTopic rTopic=redissonClient.getTopic(topicKey);rTopic.addListener(UserLoginDto.class, new MessageListener<UserLoginDto>() {@Overridepublic void onMessage(CharSequence charSequence, UserLoginDtodto) {log.info("记录用户登录成功后的轨迹-消费者-监听消费到消息:{} ",dto);//判断消息是否为nullif (dto!=null){//如果消息不为null,则将消息记录入数据库中System.out.println("insert into table");}}});}catch (Exception e){log.error("记录用户登录成功后的轨迹-消费者-发生异常:",e.fillInStackTrace());}}/*** 设置项目启动时也跟着启动* @return*/@Overridepublic int getOrder() {return 0;}
}

PS:简单补充下消费者实现的两个接口

1.ApplicationRunner

springBoot项目启动时,若想在启动之后直接执行某一段代码,就可以用 ApplicationRunner这个接口,并实现接口里面的run(ApplicationArguments args)方法,方法中写上自己的想要的代码逻辑。

2.Ordered

传送门:
https://www.cnblogs.com/fangjian0423/p/spring-Ordered-interface.html

控制台输出