Skip to content

Commit 147b118

Browse files
author
boyunkai
committed
[feature]添加模拟处理订单功能
1 parent 75bca27 commit 147b118

12 files changed

Lines changed: 166 additions & 15 deletions

File tree

09mq/activemq-demo/src/main/java/io/byk/activemq/JmsActiveMqApplication.java renamed to 09mq/activemq-demo/src/main/java/io/byk/activemq/jms/JmsActiveMqApplication.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
package io.byk.activemq;
1+
package io.byk.activemq.jms;
22

33

4-
import static io.byk.activemq.config.ActiveMqConfig.ACTIVE_MQ_QUEUE;
5-
import static io.byk.activemq.config.ActiveMqConfig.ACTIVE_MQ_TOPIC;
4+
import static io.byk.config.ActiveMqConfig.ACTIVE_MQ_QUEUE;
5+
import static io.byk.config.ActiveMqConfig.ACTIVE_MQ_TOPIC;
66

77
import javax.annotation.Resource;
88

@@ -11,8 +11,8 @@
1111
import org.springframework.boot.SpringApplication;
1212
import org.springframework.boot.autoconfigure.SpringBootApplication;
1313

14-
import io.byk.activemq.queue.QueueProducer;
15-
import io.byk.activemq.topic.TopicPublisher;
14+
import io.byk.activemq.jms.queue.QueueProducer;
15+
import io.byk.activemq.jms.topic.TopicPublisher;
1616
import lombok.extern.slf4j.Slf4j;
1717

1818
/**

09mq/activemq-demo/src/main/java/io/byk/activemq/queue/QueueConsumer.java renamed to 09mq/activemq-demo/src/main/java/io/byk/activemq/jms/queue/QueueConsumer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
package io.byk.activemq.queue;
1+
package io.byk.activemq.jms.queue;
22

3-
import static io.byk.activemq.config.ActiveMqConfig.ACTIVE_MQ_QUEUE;
3+
import static io.byk.config.ActiveMqConfig.ACTIVE_MQ_QUEUE;
44

55
import org.springframework.jms.annotation.JmsListener;
66
import org.springframework.stereotype.Service;

09mq/activemq-demo/src/main/java/io/byk/activemq/queue/QueueProducer.java renamed to 09mq/activemq-demo/src/main/java/io/byk/activemq/jms/queue/QueueProducer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.byk.activemq.queue;
1+
package io.byk.activemq.jms.queue;
22

33
import javax.annotation.Resource;
44
import javax.jms.Destination;

09mq/activemq-demo/src/main/java/io/byk/activemq/topic/JmsContainerConfig.java renamed to 09mq/activemq-demo/src/main/java/io/byk/activemq/jms/topic/JmsContainerConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.byk.activemq.topic;
1+
package io.byk.activemq.jms.topic;
22

33
import javax.jms.ConnectionFactory;
44

09mq/activemq-demo/src/main/java/io/byk/activemq/topic/TopicPublisher.java renamed to 09mq/activemq-demo/src/main/java/io/byk/activemq/jms/topic/TopicPublisher.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.byk.activemq.topic;
1+
package io.byk.activemq.jms.topic;
22

33
import javax.annotation.Resource;
44
import javax.jms.Destination;

09mq/activemq-demo/src/main/java/io/byk/activemq/topic/TopicSubscriber.java renamed to 09mq/activemq-demo/src/main/java/io/byk/activemq/jms/topic/TopicSubscriber.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
package io.byk.activemq.topic;
1+
package io.byk.activemq.jms.topic;
22

3-
import static io.byk.activemq.config.ActiveMqConfig.ACTIVE_MQ_TOPIC;
3+
import static io.byk.config.ActiveMqConfig.ACTIVE_MQ_TOPIC;
44

55
import org.springframework.jms.annotation.JmsListener;
66
import org.springframework.stereotype.Service;

09mq/activemq-demo/src/main/java/io/byk/activemq/config/ActiveMqConfig.java renamed to 09mq/activemq-demo/src/main/java/io/byk/config/ActiveMqConfig.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.byk.activemq.config;
1+
package io.byk.config;
22

33
/**
44
* 常量类
@@ -11,5 +11,6 @@ public class ActiveMqConfig {
1111
public static final String ACTIVE_MQ_QUEUE = "test.queue";
1212
// 测试主题
1313
public static final String ACTIVE_MQ_TOPIC = "test.topic";
14-
// 目标地址,61616 端口为 JMS 协议,具体查看在 apache-activemq-5.16.1/conf/activemq.xml
14+
// 队列大小
15+
public static final Integer QUEUE_SIZE = 10;
1516
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package io.byk.queue.order;
2+
3+
import java.util.LinkedList;
4+
import java.util.Queue;
5+
6+
import javax.annotation.Resource;
7+
8+
import org.springframework.boot.ApplicationArguments;
9+
import org.springframework.boot.ApplicationRunner;
10+
import org.springframework.boot.SpringApplication;
11+
import org.springframework.boot.autoconfigure.SpringBootApplication;
12+
13+
import com.google.common.collect.Lists;
14+
15+
import io.byk.activemq.jms.JmsActiveMqApplication;
16+
import io.byk.queue.order.entity.Order;
17+
import io.byk.queue.order.service.QueueConsumer;
18+
import io.byk.queue.order.service.QueueProducer;
19+
import lombok.extern.slf4j.Slf4j;
20+
21+
/**
22+
* @author boyunkai <boyunkai@kuaishou.com>
23+
* Created on 2021-02-05
24+
*/
25+
@SpringBootApplication
26+
@Slf4j
27+
public class QueueApplication implements ApplicationRunner {
28+
private final static Queue<Order> orderQueue = Lists.newLinkedList();
29+
30+
@Resource
31+
QueueProducer queueProducer;
32+
33+
@Resource
34+
QueueConsumer queueConsumer;
35+
36+
public static void main(String[] args) {
37+
SpringApplication.run(QueueApplication.class, args);
38+
}
39+
40+
@Override
41+
public void run(ApplicationArguments args) throws Exception {
42+
for (int i = 0; i < 10; i++) {
43+
log.info(queueProducer.sendMessage(orderQueue) + "<=======入队");
44+
}
45+
while (true) {
46+
try {
47+
log.info(queueConsumer.receiveMessage(orderQueue) + "=======>出队");
48+
Thread.sleep(100);
49+
} catch (IllegalStateException exception) {
50+
log.info(exception.getMessage());
51+
break;
52+
}
53+
}
54+
}
55+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package io.byk.queue.order.entity;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Data;
5+
6+
/**
7+
* @author boyunkai <boyunkai@kuaishou.com>
8+
* Created on 2021-02-05
9+
*/
10+
@Data
11+
@AllArgsConstructor
12+
public class Order {
13+
// 订单编号
14+
private String orderId;
15+
// 状态 0-未处理 1-已处理
16+
private Integer statusId;
17+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package io.byk.queue.order.service;
2+
3+
import java.util.List;
4+
import java.util.Objects;
5+
import java.util.Queue;
6+
7+
import org.springframework.stereotype.Service;
8+
9+
import io.byk.queue.order.entity.Order;
10+
import lombok.extern.slf4j.Slf4j;
11+
12+
/**
13+
* @author boyunkai <boyunkai@kuaishou.com>
14+
* Created on 2021-02-05
15+
*/
16+
@Service
17+
@Slf4j
18+
public class QueueConsumer {
19+
public String receiveMessage(Queue<Order> orderQueue) throws IllegalAccessException {
20+
// STEP 1: 校验队列
21+
if (Objects.isNull(orderQueue)) {
22+
throw new IllegalAccessException("订单队列不存在");
23+
}
24+
boolean isOrderQueueEmpty = orderQueue.size() == 0;
25+
if (isOrderQueueEmpty) {
26+
throw new IllegalStateException("订单队列为空");
27+
}
28+
// STEP 2: 校验订单
29+
Order order = orderQueue.poll();
30+
if (Objects.isNull(order)) {
31+
throw new IllegalAccessException("订单不存在");
32+
}
33+
boolean isOrderComplete = order.getStatusId() == 1;
34+
if (isOrderComplete) {
35+
throw new IllegalAccessException("订单已完成");
36+
}
37+
// STEP 3: 更改订单状态
38+
order.setStatusId(1);
39+
return order.toString();
40+
}
41+
}

0 commit comments

Comments
 (0)