1.3 发送视频处理消息
当视频上传成功后向MQ 发送视频 处理消息。
修改媒资管理服务的文件上传代码,当文件上传成功向MQ发送视频处理消息。
1.3.1 RabbitMQ配置
1、将media-processor工程下的RabbitmqConfig配置类拷贝到media工程下。
2、在media工程下配置mq队列等信息
修改application.yml
xc‐service‐manage‐media:
mq:
queue‐media‐video‐processor: queue_media_video_processor
routingkey‐media‐video: routingkey_media_video
1.3.2 修改Service
创建RabbitMQConfig
或者复制粘贴
@Configuration
public class RabbitMQConfig {
public static final String EX_MEDIA_PROCESSTASK = "ex_media_processor";
//视频处理路由
@Value("${xc-service-manage-media.mq.routingkey-media-video}")
public String routingkey_media_video;
//消费者并发数量
public static final int DEFAULT_CONCURRENT = 10;
/**
* 交换机配置
* @return the exchange
*/
@Bean(EX_MEDIA_PROCESSTASK)
public Exchange EX_MEDIA_VIDEOTASK() {
return ExchangeBuilder.directExchange(EX_MEDIA_PROCESSTASK).durable(true).build();
}
}
在文件合并方法中添加向mq发送视频处理消息的代码:
@Autowired
RabbitTemplate rabbitTemplate;
@Value("${xc-service-manage-media.mq.routingkey-media-video}")
String routingkey_media_video;
/**
* 发送视频处理消息
* @param mediaId 文件id
* @return
*/
public ResponseResult sendProcessVideoMsg(String mediaId){
//查询数据库mediaFile
Optional<MediaFile> optional = mediaFileRepository.findById(mediaId);
if(!optional.isPresent()){
ExceptionCast.cast(CommonCode.FAIL);
}
//构建消息内容
Map<String,String> map = new HashMap<>();
map.put("mediaId",mediaId);
String jsonString = JSON.toJSONString(map);
//向MQ发送视频处理消息
try {
rabbitTemplate.convertAndSend(RabbitMQConfig.EX_MEDIA_PROCESSTASK,routingkey_media_video,jsonString);
} catch (AmqpException e) {
e.printStackTrace();
return new ResponseResult(CommonCode.FAIL);
}
return new ResponseResult(CommonCode.SUCCESS);
}
在mergechunks方法最后调用sendProcessVideo方法。
......
//状态为上传成功
mediaFile.setFileStatus("301002");
mediaFileRepository.save(mediaFile);
String mediaId = mediaFile.getFileId();
//向MQ发送视频处理消息
sendProcessVideoMsg(mediaId);
......