这里使用一个最简单的模式,一个生产者内容被消费一次
配置类 在rabbitmq web管理界面可以看到OPERATERECORD_QUEUE 这个变量里面的名称
OperateRecordRabbitConfig.java
package com.meeno.inner.oa.common.rabbit.operaterecord;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @description: 操作记录rabbit配置
* @author: Wzq
* @create: 2020-04-09 20:25
*/
@Configuration
public class OperateRecordRabbitConfig {
public static final String OPERATERECORD_QUEUE = "operateRecordQueue";
@Bean
public Queue miaoShaQueue(){
//创建队列
return new Queue(OPERATERECORD_QUEUE,true);
}
}
生产者
OperateRecordProduce.java
package com.meeno.inner.oa.common.rabbit.operaterecord;
import com.meeno.inner.oa.extend.operaterecord.service.model.OperateRecordModel;
import lombok.extern.java.Log;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.List;
/**
* @description: 操作记录生产者
* @author: Wzq
* @create: 2020-04-09 20:13
*/
@Component
@Log
public class OperateRecordProduce {
@Autowired
private RabbitTemplate rabbitTemplate;
public void sendOperaterecord(List<OperateRecordModel> list){
if(!CollectionUtils.isEmpty(list)){
log.info("Produce - > OperateRecordModel : " + list.toString());
this.rabbitTemplate.convertAndSend(OperateRecordRabbitConfig.OPERATERECORD_QUEUE, list);
}
}
}
消费者
OperateRecordConsumer.java
package com.meeno.inner.oa.common.rabbit.operaterecord;
import com.meeno.inner.oa.extend.operaterecord.service.OperateRecordService;
import com.meeno.inner.oa.extend.operaterecord.service.model.OperateRecordModel;
import lombok.extern.java.Log;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @description: 操作记录消费者
* @author: Wzq
* @create: 2020-04-09 20:15
*/
@Component
@RabbitListener(queues = "operateRecordQueue")
@Log
public class OperateRecordConsumer {
@Autowired
private OperateRecordService operateRecordService;
@RabbitHandler
public void process(List<OperateRecordModel> list) {
log.info("Consumer - > OperateRecordModel : " + list.toString());
this.operateRecordService.addAll(list);
}
}