登录
    Technology changes quickly but people's minds change slowly.

消息队列的使用-RabbitMQ

技术宅 破玉 1338次浏览 0个评论

  消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题

  实现高性能,高可用,可伸缩和最终一致性架构

  使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ

  我司目前消息队列主要用于日志的处理:日志处理是指将消息队列用在日志处理中,比如微服务的应用,解决大量日志传输的问题。架构简化如下:
日志采集客户端,负责日志数据采集,定时写受写入MQ队列;
MQ消息队列,负责日志数据的接收,存储和转发;
日志处理应用:订阅并消费MQ队列中的日志数据;

我们写个springboot简单的例子:
日志的生产者:
负责收集系统日志,放入消息队列:我们用定时任务简单模拟下:
MagicMqService:

 public  void  wrtiteLogToMQ(SysLog log){
       System.out.println("写入日志");
        rabbitTemplate.convertAndSend(QUEUENAME, log);
    }
@EnableScheduling
@Configuration
public class TaskService {
    @Autowired
    private MagicMqService magicMqService;

    @Scheduled(cron = "0/10 * * * * ?")
    public  void writelogcron(){
        for(int i=0;i<100;i++){
            SysLog log=new SysLog();
            log.setLogname("hello");
            log.setLogdate("2019-05-10");
            log.setLogcontent(UUID.randomUUID().toString());
            magicMqService.wrtiteLogToMQ(log);
        }
    }

消费者:从消息队列读取消息,存库:我们使用RabbitHandler 和RabbitListener 实现

 @RabbitHandler
    @RabbitListener(queues = QUEUENAME)
    public void readFromMQ(SysLog sysLogDTO){
        System.out.println("读取日志");
        System.err.println("从MQ 读取日志:"+sysLogDTO.getLogname()+"内容:"+sysLogDTO.getLogcontent());
    }

华裳绕指柔, 版权所有丨如未注明 , 均为原创|转载请注明消息队列的使用-RabbitMQ
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址