1、MQ生产者
@Component
public class RabbitSender {
private static final Logger log = LoggerFactory.getLogger(RabbitSender.class);
@Autowired
private RabbitTemplate rabbitTemplate;
ConfirmCallback confirmCallback = new ConfirmCallback() {
public void confirm(CorrelationData correlationData, boolean ack, String cause) {
RabbitSender.log.info("correlationData:" + correlationData);
RabbitSender.log.info("ack:" + ack);
if (!ack) {
RabbitSender.log.error("异常处理...");
}
}
};
ReturnCallback returnCallback = new ReturnCallback() {
public void returnedMessage(Message message, int replyCode, String replyText, String exchange, String routingKey) {
RabbitSender.log.info("return exchange: " + exchange + ",routingKey:" + routingKey);
}
};
public RabbitSender() {
}
public void simpleSend(String exchange, String routingKey, String message, Map<String, Object> properties) throws Exception {
if (properties == null) {
properties = new HashMap(2);
}
((Map)properties).put("routingKey", routingKey);
Message msg = (Message)MessageBuilder.withBody(message.getBytes()).setContentType("text/plain").setContentEncoding("utf-8").copyHeaders((Map)properties).build();
this.rabbitTemplate.convertAndSend(exchange, routingKey, msg);
}
public RabbitTemplate getRabbitTemplate() {
return this.rabbitTemplate;
}
public void setRabbitTemplate(RabbitTemplate rabbitTemplate) {
this.rabbitTemplate = rabbitTemplate;
}
}
2、MQ消费者
@Component
@Slf4j
public class ReceiverWorkerOrderMessage {
public static final long WORK_ORDER_SAVE_TIME=12*60*60;
@Autowired
RedisUtils redisUtils;
@Autowired
IcsWorkOrderDao icsWorkOrderDao;
@RabbitListener(queues = {"${mq.config.queue.workorder_queue}"})
public void saveWorkOrder(Message message, Channel channel) throws IOException {
String body = new String(message.getBody(), "utf-8");
//业务代码
}
}