|
|
@@ -0,0 +1,51 @@
|
|
|
+package com.kym.service.queue.consumer;
|
|
|
+
|
|
|
+import com.kym.entity.common.Queues;
|
|
|
+import com.kym.service.miniapp.UserCouponService;
|
|
|
+import com.rabbitmq.client.Channel;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.amqp.core.Message;
|
|
|
+import org.springframework.amqp.rabbit.annotation.RabbitHandler;
|
|
|
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import java.io.IOException;
|
|
|
+import java.util.List;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+
|
|
|
+@Slf4j
|
|
|
+@Component
|
|
|
+public class UserCouponConsumer {
|
|
|
+
|
|
|
+ private final UserCouponService userCouponService;
|
|
|
+
|
|
|
+ public UserCouponConsumer(UserCouponService userCouponService) {
|
|
|
+ this.userCouponService = userCouponService;
|
|
|
+ }
|
|
|
+
|
|
|
+ @RabbitHandler
|
|
|
+ @RabbitListener(queues = Queues.DELAY_QUEUE)
|
|
|
+ public void userCouponHandler(List<Message> messages, Channel channel) {
|
|
|
+ log.info("userCouponHandler收到:{}", messages);
|
|
|
+
|
|
|
+ final List<String> messageList = messages.stream()
|
|
|
+ .map(each -> new String(each.getBody()))
|
|
|
+ .toList();
|
|
|
+ log.info("[onMessage] size:{}", messages.size());
|
|
|
+
|
|
|
+ try {
|
|
|
+ for (Message message : messages) {
|
|
|
+ // todo 业务逻辑处理
|
|
|
+ log.info("消息:{}", new String(message.getBody()));
|
|
|
+
|
|
|
+
|
|
|
+ channel.basicAck(message.getMessageProperties().getDeliveryTag(), true);
|
|
|
+ log.info("批次处理完毕.........");
|
|
|
+ }
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|