rabbitmq

一: 发送:rabbitSender.addSignWarnConfig(schoolDto);

二: 在 RabbitSender 文件中发送消息到mq中(在不同的服务中发送的是字符串):

import cn.hutool.json.JSONUtil;
@Autowired
private AmqpTemplate rabbitTemplate;

public void addSignWarnConfig(GxySchoolDto gxySchoolDto){
logger.info("修改的信息=="+gxySchoolDto);
rabbitTemplate.convertAndSend(Constant.RABBIT_CONFIG_SIGNWARN,JSONUtil.toJsonStr(gxySchoolDto));
}


public class Constant {
public static final String RABBIT_CONFIG_SIGNWARN="system.configSignWarn";
}


三: 在另一个服务中申明一个队列:
@Configuration
public class RabbitConfig {
@Bean
public Queue updateWarnConfig() {
return new Queue(Constant.RABBIT_CONFIG_SIGNWARN);
}
}

四:接收方:
@Component
public class RabbitReceiver {
private static Logger logger = LoggerFactory.getLogger(RabbitReceiver.class);

@Autowired
private CommonSysWarningService commonSysWarningService;

//修改考勤告警配置
@RabbitListener(queues = Constant.RABBIT_CONFIG_SIGNWARN)
@RabbitHandler
public void setSignWarnConfig(Channel channel, Message message){
String jsonstr = new String(message.getBody());
boolean isok = false;
try {
logger.info("消费者===============start");
logger.info("jsonstr=="+jsonstr);
CommonSysWarningEntity sysWarningEntity = JSONUtil.toBean(jsonstr,CommonSysWarningEntity.class);
if(sysWarningEntity != null && !StringUtils.isEmpty(sysWarningEntity.getSchoolId())){
commonSysWarningService.saveBySchool(sysWarningEntity);
}
//手动ack确认
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
isok=true;
}catch (Exception ex){
logger.error("jsonstr=="+jsonstr);
}finally {
if(!isok){
try{
//丢弃这条消息
channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, false);
}catch (Exception e1){
e1.printStackTrace();
}
}
}
}
}

 

posted @ 2019-09-24 19:22  zhoudingzhao  阅读(124)  评论(0编辑  收藏  举报