新しいJavaプロジェクトの研究オンラインノート-day14(V)

メッセージ送信するために1.3ビデオ処理 
、ビデオのアップロードプロセスが正常MQへのビデオメッセージを送りました。ファイルのアップロードが正常にビデオ処理MQメッセージに送られたときに、ファイルのコードをアップロードするには、メディア資産管理サービスを変更します。1.3.1 RabbitMQの構成 
1、メディアにコピーされたメディア・プロセッサ・ベースの工学プロジェクトで構成RabbitmqCon用のfi G。
2、メディア工学のapplication.yml MQキューを変更する設定情報
 

[AppleScriptの]  プレーンテキストビューは、 コードをコピー

1

2

3

4

xc‐service‐manage‐media:

  mq:  

  queue‐media‐video‐processor: queue_media_video_processor 

   routingkey‐media‐video: routingkey_media_video


1.3.2変更サービスは 
、文書の合併プロセスMQに送信されたビデオメッセージを処理するコードを追加します。
 

[AppleScriptの]  プレーンテキストビューは、 コードをコピー

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

//向MQ发送视频处理消息 

   public ResponseResult sendProcessVideoMsg(String mediaId){    

   Optional<MediaFile> optional = mediaFileRepository.findById(fileMd5)

       if(!optional.isPresent()){   

       return new ResponseResult(CommonCode.FAIL);   

     }    

   MediaFile mediaFile = optional.get();   

     //发送视频处理消息    

    Map<String,String> msgMap = new HashMap<>();   

     msgMap.put("mediaId",mediaId);    

    //发送的消息      

  String msg = JSON.toJSONString(msgMap);    

    try {         

    this.rabbitTemplate.convertAndSend(RabbitMQConfig.EX_MEDIA_PROCESSTASK,routingkey_media_video,  msg);             LOGGER.info("send media process task msg:{}",msg)

       }catch (Exception e){    

        e.printStackTrace();    

        LOGGER.info("send media process task error,msg is:{},error:{}",msg,e.getMessage());     

       return new ResponseResult(CommonCode.FAIL);  

      }    

    return new ResponseResult(CommonCode.SUCCESS);  

    }


mergechunksでは最後の方法は、sendProcessVideoメソッドを呼び出しました。
 

[AppleScriptの]  プレーンテキストビューは、 コードをコピー

1

2

3

4

5

6

7

...... 

       //状态为上传成功  

      mediaFile.setFileStatus("301002");    

    mediaFileRepository.save(mediaFile);  

      String mediaId = mediaFile.getFileId();   

     //向MQ发送视频处理消息  

      sendProcessVideoMsg(mediaId); ......


1.4ビデオテスト 
試験手順:
1、AVIファイルアップロード
メッセージ3を送信するログが、受信したメッセージが処理されているかどうかを映像処理プロセスを観察するかどうかを観察するために、2
M3U8とTSファイル生成1.5ビデオ処理かどうかを観察するために、5生成されるMP4ファイルを観察した4同時実行 
注釈@RabbitListener消費方法を指定するために使用されるコード、シングルスレッドのデフォルトのキューを聴く、キューが場合複数のタスク各端消費者支出のみメッセージ、メッセージの処理を遅らせる傾向ねじメッセージ処理、メッセージの蓄積を観察することができますハードウェアリソースのない最大使用。
MQ植物コンテナは、並行処理の数は、キュー・マルチスレッド、マルチスレッド処理メッセージを聞く実現することができる増加、パラメータを構成することができます。
植物のコンテナに配置された1は、RabbitmqCon Fiののg.javaを追加します。
 

[AppleScriptの]  プレーンテキストビューは、 コードをコピー

1

2

3

4

5

6

7

8

9

//消费者并发数量 public static final int DEFAULT_CONCURRENT = 10

 @Bean("customContainerFactory") public SimpleRabbitListenerContainerFactory

  containerFactory(SimpleRabbitListenerContainerFactoryConfigurer configurer, ConnectionFactory

 connectionFactory) {   

 SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();

    factory.setConcurrentConsumers(DEFAULT_CONCURRENT);   

 factory.setMaxConcurrentConsumers(DEFAULT_CONCURRENT)

   configurer.configure(factory, connectionFactory);  

  return factory; }


図2に示すように、注釈機能で指定されたコンテナ@RabbitListener
 

[AppleScriptの]  プレーンテキストビューは、 コードをコピー

1

2

3

//视频处理方法

 @RabbitListener(queues = {"${xc‐service‐manage‐media.mq.queue‐media‐video‐processor}"},      

          containerFactory="customContainerFactory")


テスト再び同時処理能力の複数のタスクキュー消費者側が存在するとき

おすすめ

転載: blog.csdn.net/czbkzmj/article/details/91802886