由于太长了,所以分成两篇写,接上一篇讲解了消息的定义和发送,这里继续讲解消费者
由于可能每条消息所处理的逻辑可能不一样,例如:常规订单30分钟不支付则取消订单,团购订单一天拼团不成功则取消等等,为了避免在消费者监听类中使用大量if else,这里使用策略模式来处理(由于spring的bean的初始化的时候创建,如果用Java常规的反射获取类,则在具体策略类用注入别的bean的时候,会拿不到值,所以需要通过applicationContext获取类)
1.消息消费者类-MessageConsumer -- 使用注解的方式监听,这里包括消费确认
@Component
@RabbitListener(queues = QueueContent.MESSAGE_QUEUE_NAME)
public class MessageConsumer {
static Logger logger = LoggerFactory.getLogger(MessageConsumer.class);
@RabbitHandler
public void handler(String msg,Channel channel, Message message) throws IOException {
if (!StringUtils.isEmpty(msg)) {
MessagePojo messagePojo = JSONUtil.toBean(msg,MessagePojo.class);
Action action = Action.RETRY;
try {
//这里使用策略模式和springboot的结合使用,