package com.ks.push.manager.rabbitmq;
|
|
import com.rabbitmq.client.Channel;
|
import org.springframework.amqp.core.Message;
|
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
|
import java.io.IOException;
|
|
/**
|
* @author hxh
|
* @title: RabbitmqMsgConsumeUtil
|
* @description: 消息消费工具
|
* @date 2024/10/12 14:43
|
*/
|
public class RabbitmqMsgConsumeUtil {
|
|
public interface IMessageProcess{
|
public void onProcess() throws Exception;
|
}
|
|
public static void processMessage(Message message, Channel channel, RabbitTemplate rabbitTemplate, IMessageProcess messageProcessor) throws IOException {
|
try {
|
messageProcessor.onProcess();
|
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
|
}catch(Exception e){
|
if(RabbitmqSenderUtil.retryConsume(rabbitTemplate, message)){
|
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
|
}else{
|
channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, false);
|
}
|
}
|
}
|
|
|
}
|