pigxCloud微服务项目05——服务端——整合RabbitMQ

概述

在新建得业务服务中集成RabbitMQ,用以解决高并发离线下载腾讯云文件。

1、引入依赖

<!--添加rabbitmq依赖-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

2、配置文件

# rabbitmq
spring.rabbitmq.host=192.168.0.88
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

3、配置队列、交换器、路由等高级信息

package com.cxbdapp.hbhtyyBackground.config;

import cn.hutool.core.util.StrUtil;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 附件类型 1、原始IM消息记录文件 2、IM中的图片文件 3、IM中的语音文件 4、IM中的视频文件 5、IM消息记录文件 6、录制回调单路视频json记录文件 7、录制回调单路视频文件 8、录制回调混流视频json记录文件 9、录制回调混流视频文件
 *
 * @author zxy
 * @description 用来配置队列、交换器、路由等高级信息
 * @date 2020-12-01 15:40:00
 */
@Configuration
public class MQConfig {

	private static final String PROFILES_ACTIVE = "dev";


	public static final String QUEUE_MQ_TEST = PROFILES_ACTIVE + StrUtil.DASHED + "hbhtyy-queue-test";

	public static final String QUEUE1_DOWNLOAD_ORIGINAL_IM_JSON = PROFILES_ACTIVE + StrUtil.DASHED + "hbhtyy-queue1-downloadOriginalIMJson";
	public static final String QUEUE5_DOWNLOAD_IM_JSON = PROFILES_ACTIVE + StrUtil.DASHED + "hbhtyy-queue5-downloadIMJson";

	public static final String QUEUE68_DOWNLOAD_VIDEO_JSON = PROFILES_ACTIVE + StrUtil.DASHED + "hbhtyy-queue68-downloadVideoJson";
	public static final String QUEUE79_DOWNLOAD_VIDEO_JSON_FILE = PROFILES_ACTIVE + StrUtil.DASHED + "hbhtyy-queue79-downloadVideoJsonFile";


	/**
	 * 测试程序
	 *
	 * @return Queue
	 */
	@Bean(name = "queueMqTest")
	public Queue queueMqTest() {
		return new Queue(QUEUE_MQ_TEST);
	}

	/**
	 * 下载【原始IM消息记录文件】
	 *
	 * @return Queue
	 */
	@Bean(name = "queue1DownloadOriginalIMJson")
	public Queue queue1DownloadOriginalIMJson() {
		return new Queue(QUEUE1_DOWNLOAD_ORIGINAL_IM_JSON);
	}

	/**
	 * 下载【IM消息记录文件】
	 *
	 * @return Queue
	 */
	@Bean(name = "queue5DownloadIMJson")
	public Queue queue5DownloadIMJson() {
		return new Queue(QUEUE5_DOWNLOAD_IM_JSON);
	}

	/**
	 * 下载【录制回调单路视频json记录文件、录制回调混流视频json记录文件】
	 *
	 * @return Queue
	 */
	@Bean(name = "queue68DownloadVideoJson")
	public Queue queue68DownloadVideoJson() {
		return new Queue(QUEUE68_DOWNLOAD_VIDEO_JSON);
	}

	/**
	 * 下载【录制回调单路视频文件、录制回调混流视频文件】
	 *
	 * @return Queue
	 */
	@Bean(name = "queue79DownloadVideoJsonFile")
	public Queue queue79DownloadVideoJsonFile() {
		return new Queue(QUEUE79_DOWNLOAD_VIDEO_JSON_FILE);
	}

}

4、生产者生产消息

package com.cxbdapp.hbhtyyBackground.rabbitmq;

import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.amqp.core.Queue;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;

/**
 * @author zxy
 * @description 生产者发送消息
 * @date 2020-12-01 15:40:00
 */
@Slf4j
@Component
public class MqSender {

	@Autowired
	private AmqpTemplate rabbitTemplate;

	@Resource(name = "queueMqTest")
	private Queue queue;

	@PostConstruct
	public void sendTest() {
		log.info("queue name: " + queue.getName());
		log.info("queue message: " + ("mq测试消息,队列名为:" + queue.getName()));
		rabbitTemplate.convertAndSend(queue.getName(), "mq测试消息,队列名为:" + queue.getName());
	}

}

5、RabbitMQ监听类,消费者消费消息

监听类

package com.cxbdapp.hbhtyyBackground.rabbitmq;

import com.cxbdapp.hbhtyyBackground.config.MQConfig;
import com.cxbdapp.hbhtyyBackground.service.MqService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * 附件类型 1、原始IM消息记录文件 2、IM中的图片文件 3、IM中的语音文件 4、IM中的视频文件 5、IM消息记录文件 6、录制回调单路视频json记录文件 7、录制回调单路视频文件 8、录制回调混流视频json记录文件 9、录制回调混流视频文件
 *
 * @author zxy
 * @description RabbitMQ监听类,提供消费对应消息队列名消息的接口
 * @date 2020-12-01 15:40:00
 */
@Slf4j
@Component
public class MqReceiver {

	@Autowired
	private MqService mqService;

	/**
	 * 监听消息测试程序
	 *
	 * @param message 消息
	 */
	@RabbitListener(queues = MQConfig.QUEUE_MQ_TEST)
	public void mqTestListener(String message) {
		log.info("MQ test: message: " + message);
	}


	/**
	 * 监听【下载【原始IM消息记录文件】】消息
	 *
	 * @param message 消息
	 */
	@RabbitListener(queues = MQConfig.QUEUE1_DOWNLOAD_ORIGINAL_IM_JSON)
	public void queue1DownloadOriginalIMJson(String message) {
		log.info("进入 queue1DownloadOriginalIMJson 函数,message=" + message);
		mqService.queue1DownloadOriginalIMJson(message);
	}

	/**
	 * 监听【下载【IM消息记录文件】】消息
	 *
	 * @param message 消息
	 */
	@RabbitListener(queues = MQConfig.QUEUE5_DOWNLOAD_IM_JSON)
	public void queue5DownloadIMJson(String message) {
		log.info("进入 queue5DownloadIMJson 函数,message=" + message);
		mqService.queue5DownloadIMJson(message);
	}

	/**
	 * 监听【下载【录制回调单路视频json记录文件、录制回调混流视频json记录文件】】消息
	 *
	 * @param message 消息
	 */
	@RabbitListener(queues = MQConfig.QUEUE68_DOWNLOAD_VIDEO_JSON)
	public void queue68DownloadVideoJson(String message) {
		log.info("进入 queue68DownloadVideoJson 函数,message=" + message);
		mqService.queue68DownloadVideoJson(message);
	}

	/**
	 * 监听【下载【录制回调单路视频文件、录制回调混流视频文件】】消息
	 *
	 * @param message 消息
	 */
	@RabbitListener(queues = MQConfig.QUEUE79_DOWNLOAD_VIDEO_JSON_FILE)
	public void queue79DownloadVideoJsonFile(String message) {
		log.info("进入 queue79DownloadVideoJsonFile 函数,message=" + message);
		mqService.queue79DownloadVideoJsonFile(message);
	}

}

服务类

package com.cxbdapp.hbhtyyBackground.service;

/**
 * RabbitMQ服务类
 *
 * @author zxy
 * @date 2020-12-01 15:40:00
 */
public interface MqService {
	/**
	 * 下载【IM原始消息记录文件】
	 *
	 * @param message 消息
	 */
	void queue1DownloadOriginalIMJson(String message);

	/**
	 * 下载【IM消息记录文件】
	 *
	 * @param message 消息
	 */
	void queue5DownloadIMJson(String message);

	/**
	 * 下载【录制回调单路视频json记录文件、录制回调混流视频json记录文件】
	 *
	 * @param message 消息
	 */
	void queue68DownloadVideoJson(String message);

	/**
	 * 下载【录制回调单路视频文件、录制回调混流视频文件】
	 *
	 * @param message 消息
	 */
	void queue79DownloadVideoJsonFile(String message);
}

实现类

package com.cxbdapp.hbhtyyBackground.service.impl;

import com.cxbdapp.hbhtyyBackground.service.MqService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

/**
 * RabbitMQ服务层实现类
 *
 * @author zxy
 * @date 2020-12-01 15:40:00
 */
@Slf4j
@Service
public class MqServiceImpl implements MqService {
	@Override
	public void queue1DownloadOriginalIMJson(String message) {

	}

	@Override
	public void queue5DownloadIMJson(String message) {

	}

	@Override
	public void queue68DownloadVideoJson(String message) {

	}

	@Override
	public void queue79DownloadVideoJsonFile(String message) {

	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小言W

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值