From 69ccbe1787be29b554bca4c002ef91b483ec904c Mon Sep 17 00:00:00 2001 From: YunaiV <> Date: Sun, 15 Dec 2019 18:41:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20activemq=20=E7=A4=BA?= =?UTF-8?q?=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activemqdemo/consumer/Demo03Consumer.java | 2 +- .../activemqdemo/message/Demo03Message.java | 2 +- .../activemqdemo/message/Demo02Message.java | 2 +- lab-32/lab-32-activemq-demo-orderly/pom.xml | 30 ++++++++++++++++ .../lab32/activemqdemo/Application.java | 13 +++++++ .../activemqdemo/consumer/Demo04Consumer.java | 20 +++++++++++ .../activemqdemo/message/Demo4Message.java | 30 ++++++++++++++++ .../activemqdemo/producer/Demo03Producer.java | 22 ++++++++++++ .../src/main/resources/application.yaml | 8 +++++ .../lab32/activemqdemo/package-info.java | 1 + .../producer/Demo03ProducerTest.java | 35 +++++++++++++++++++ .../target/classes/application.yaml | 8 +++++ lab-32/pom.xml | 1 + 13 files changed, 171 insertions(+), 3 deletions(-) create mode 100644 lab-32/lab-32-activemq-demo-orderly/pom.xml create mode 100644 lab-32/lab-32-activemq-demo-orderly/src/main/java/cn/iocoder/springboot/lab32/activemqdemo/Application.java create mode 100644 lab-32/lab-32-activemq-demo-orderly/src/main/java/cn/iocoder/springboot/lab32/activemqdemo/consumer/Demo04Consumer.java create mode 100644 lab-32/lab-32-activemq-demo-orderly/src/main/java/cn/iocoder/springboot/lab32/activemqdemo/message/Demo4Message.java create mode 100644 lab-32/lab-32-activemq-demo-orderly/src/main/java/cn/iocoder/springboot/lab32/activemqdemo/producer/Demo03Producer.java create mode 100644 lab-32/lab-32-activemq-demo-orderly/src/main/resources/application.yaml create mode 100644 lab-32/lab-32-activemq-demo-orderly/src/test/java/cn/iocoder/springboot/lab32/activemqdemo/package-info.java create mode 100644 lab-32/lab-32-activemq-demo-orderly/src/test/java/cn/iocoder/springboot/lab32/activemqdemo/producer/Demo03ProducerTest.java create mode 100644 lab-32/lab-32-activemq-demo-orderly/target/classes/application.yaml diff --git a/lab-32/lab-32-activemq-demo-concurrency/src/main/java/cn/iocoder/springboot/lab32/activemqdemo/consumer/Demo03Consumer.java b/lab-32/lab-32-activemq-demo-concurrency/src/main/java/cn/iocoder/springboot/lab32/activemqdemo/consumer/Demo03Consumer.java index 5f63b4ef..bd2a8a4f 100644 --- a/lab-32/lab-32-activemq-demo-concurrency/src/main/java/cn/iocoder/springboot/lab32/activemqdemo/consumer/Demo03Consumer.java +++ b/lab-32/lab-32-activemq-demo-concurrency/src/main/java/cn/iocoder/springboot/lab32/activemqdemo/consumer/Demo03Consumer.java @@ -12,7 +12,7 @@ public class Demo03Consumer { private Logger logger = LoggerFactory.getLogger(getClass()); @JmsListener(destination = Demo03Message.QUEUE, - concurrency = "10") + concurrency = "2") public void onMessage(Demo03Message message) { logger.info("[onMessage][线程编号:{} 消息内容:{}]", Thread.currentThread().getId(), message); } diff --git a/lab-32/lab-32-activemq-demo-concurrency/src/main/java/cn/iocoder/springboot/lab32/activemqdemo/message/Demo03Message.java b/lab-32/lab-32-activemq-demo-concurrency/src/main/java/cn/iocoder/springboot/lab32/activemqdemo/message/Demo03Message.java index 0bad72fa..e77b52c4 100644 --- a/lab-32/lab-32-activemq-demo-concurrency/src/main/java/cn/iocoder/springboot/lab32/activemqdemo/message/Demo03Message.java +++ b/lab-32/lab-32-activemq-demo-concurrency/src/main/java/cn/iocoder/springboot/lab32/activemqdemo/message/Demo03Message.java @@ -22,7 +22,7 @@ public class Demo03Message implements Serializable { @Override public String toString() { - return "Demo01Message{" + + return "Demo03Message{" + "id=" + id + '}'; } diff --git a/lab-32/lab-32-activemq-demo-delay/src/main/java/cn/iocoder/springboot/lab32/activemqdemo/message/Demo02Message.java b/lab-32/lab-32-activemq-demo-delay/src/main/java/cn/iocoder/springboot/lab32/activemqdemo/message/Demo02Message.java index 8637e71e..f57b8d9b 100644 --- a/lab-32/lab-32-activemq-demo-delay/src/main/java/cn/iocoder/springboot/lab32/activemqdemo/message/Demo02Message.java +++ b/lab-32/lab-32-activemq-demo-delay/src/main/java/cn/iocoder/springboot/lab32/activemqdemo/message/Demo02Message.java @@ -22,7 +22,7 @@ public class Demo02Message implements Serializable { @Override public String toString() { - return "Demo01Message{" + + return "Demo02Message{" + "id=" + id + '}'; } diff --git a/lab-32/lab-32-activemq-demo-orderly/pom.xml b/lab-32/lab-32-activemq-demo-orderly/pom.xml new file mode 100644 index 00000000..ff8835d6 --- /dev/null +++ b/lab-32/lab-32-activemq-demo-orderly/pom.xml @@ -0,0 +1,30 @@ + + + + org.springframework.boot + spring-boot-starter-parent + 2.2.1.RELEASE + + + 4.0.0 + + lab-32-activemq-demo-orderly + + + + + org.springframework.boot + spring-boot-starter-activemq + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + diff --git a/lab-32/lab-32-activemq-demo-orderly/src/main/java/cn/iocoder/springboot/lab32/activemqdemo/Application.java b/lab-32/lab-32-activemq-demo-orderly/src/main/java/cn/iocoder/springboot/lab32/activemqdemo/Application.java new file mode 100644 index 00000000..09cc5bc3 --- /dev/null +++ b/lab-32/lab-32-activemq-demo-orderly/src/main/java/cn/iocoder/springboot/lab32/activemqdemo/Application.java @@ -0,0 +1,13 @@ +package cn.iocoder.springboot.lab32.activemqdemo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + +} diff --git a/lab-32/lab-32-activemq-demo-orderly/src/main/java/cn/iocoder/springboot/lab32/activemqdemo/consumer/Demo04Consumer.java b/lab-32/lab-32-activemq-demo-orderly/src/main/java/cn/iocoder/springboot/lab32/activemqdemo/consumer/Demo04Consumer.java new file mode 100644 index 00000000..0a399723 --- /dev/null +++ b/lab-32/lab-32-activemq-demo-orderly/src/main/java/cn/iocoder/springboot/lab32/activemqdemo/consumer/Demo04Consumer.java @@ -0,0 +1,20 @@ +package cn.iocoder.springboot.lab32.activemqdemo.consumer; + +import cn.iocoder.springboot.lab32.activemqdemo.message.Demo4Message; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.jms.annotation.JmsListener; +import org.springframework.stereotype.Component; + +@Component +public class Demo04Consumer { + + private Logger logger = LoggerFactory.getLogger(getClass()); + + @JmsListener(destination = Demo4Message.QUEUE, + concurrency = "2") + public void onMessage(Demo4Message message) { + logger.info("[onMessage][线程编号:{} 消息内容:{}]", Thread.currentThread().getId(), message); + } + +} diff --git a/lab-32/lab-32-activemq-demo-orderly/src/main/java/cn/iocoder/springboot/lab32/activemqdemo/message/Demo4Message.java b/lab-32/lab-32-activemq-demo-orderly/src/main/java/cn/iocoder/springboot/lab32/activemqdemo/message/Demo4Message.java new file mode 100644 index 00000000..ab760908 --- /dev/null +++ b/lab-32/lab-32-activemq-demo-orderly/src/main/java/cn/iocoder/springboot/lab32/activemqdemo/message/Demo4Message.java @@ -0,0 +1,30 @@ +package cn.iocoder.springboot.lab32.activemqdemo.message; + +import java.io.Serializable; + +public class Demo4Message implements Serializable { + + public static final String QUEUE = "QUEUE_DEMO_04"; + + /** + * 编号 + */ + private Integer id; + + public Demo4Message setId(Integer id) { + this.id = id; + return this; + } + + public Integer getId() { + return id; + } + + @Override + public String toString() { + return "Demo04Message{" + + "id=" + id + + '}'; + } + +} diff --git a/lab-32/lab-32-activemq-demo-orderly/src/main/java/cn/iocoder/springboot/lab32/activemqdemo/producer/Demo03Producer.java b/lab-32/lab-32-activemq-demo-orderly/src/main/java/cn/iocoder/springboot/lab32/activemqdemo/producer/Demo03Producer.java new file mode 100644 index 00000000..8c4ada4b --- /dev/null +++ b/lab-32/lab-32-activemq-demo-orderly/src/main/java/cn/iocoder/springboot/lab32/activemqdemo/producer/Demo03Producer.java @@ -0,0 +1,22 @@ +package cn.iocoder.springboot.lab32.activemqdemo.producer; + +import cn.iocoder.springboot.lab32.activemqdemo.message.Demo4Message; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jms.core.JmsMessagingTemplate; +import org.springframework.stereotype.Component; + +@Component +public class Demo03Producer { + + @Autowired + private JmsMessagingTemplate jmsTemplate; + + public void syncSend(Integer id) { + // 创建 Demo03Message 消息 + Demo4Message message = new Demo4Message(); + message.setId(id); + // 同步发送消息 + jmsTemplate.convertAndSend(Demo4Message.QUEUE, message); + } + +} diff --git a/lab-32/lab-32-activemq-demo-orderly/src/main/resources/application.yaml b/lab-32/lab-32-activemq-demo-orderly/src/main/resources/application.yaml new file mode 100644 index 00000000..8179b589 --- /dev/null +++ b/lab-32/lab-32-activemq-demo-orderly/src/main/resources/application.yaml @@ -0,0 +1,8 @@ +spring: + # ActiveMQ 配置项,对应 ActiveMQProperties 配置类 + activemq: + broker-url: tcp://127.0.0.1:61616 # RabbitMQ Broker 的地址 + user: admin # 账号 + password: admin # 密码 + packages: + trust-all: true # 可信任的反序列化包 diff --git a/lab-32/lab-32-activemq-demo-orderly/src/test/java/cn/iocoder/springboot/lab32/activemqdemo/package-info.java b/lab-32/lab-32-activemq-demo-orderly/src/test/java/cn/iocoder/springboot/lab32/activemqdemo/package-info.java new file mode 100644 index 00000000..6878c298 --- /dev/null +++ b/lab-32/lab-32-activemq-demo-orderly/src/test/java/cn/iocoder/springboot/lab32/activemqdemo/package-info.java @@ -0,0 +1 @@ +package cn.iocoder.springboot.lab32.activemqdemo; diff --git a/lab-32/lab-32-activemq-demo-orderly/src/test/java/cn/iocoder/springboot/lab32/activemqdemo/producer/Demo03ProducerTest.java b/lab-32/lab-32-activemq-demo-orderly/src/test/java/cn/iocoder/springboot/lab32/activemqdemo/producer/Demo03ProducerTest.java new file mode 100644 index 00000000..0b933d1b --- /dev/null +++ b/lab-32/lab-32-activemq-demo-orderly/src/test/java/cn/iocoder/springboot/lab32/activemqdemo/producer/Demo03ProducerTest.java @@ -0,0 +1,35 @@ +package cn.iocoder.springboot.lab32.activemqdemo.producer; + +import cn.iocoder.springboot.lab32.activemqdemo.Application; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.concurrent.CountDownLatch; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = Application.class) +public class Demo03ProducerTest { + + private Logger logger = LoggerFactory.getLogger(getClass()); + + @Autowired + private Demo03Producer producer; + + @Test + public void testSyncSend() throws InterruptedException { + for (int i = 0; i < 10; i++) { + int id = (int) (System.currentTimeMillis() / 1000); + producer.syncSend(id); +// logger.info("[testSyncSend][发送编号:[{}] 发送成功]", id); + } + + // 阻塞等待,保证消费 + new CountDownLatch(1).await(); + } + +} diff --git a/lab-32/lab-32-activemq-demo-orderly/target/classes/application.yaml b/lab-32/lab-32-activemq-demo-orderly/target/classes/application.yaml new file mode 100644 index 00000000..8179b589 --- /dev/null +++ b/lab-32/lab-32-activemq-demo-orderly/target/classes/application.yaml @@ -0,0 +1,8 @@ +spring: + # ActiveMQ 配置项,对应 ActiveMQProperties 配置类 + activemq: + broker-url: tcp://127.0.0.1:61616 # RabbitMQ Broker 的地址 + user: admin # 账号 + password: admin # 密码 + packages: + trust-all: true # 可信任的反序列化包 diff --git a/lab-32/pom.xml b/lab-32/pom.xml index eb4572ea..5be9db26 100644 --- a/lab-32/pom.xml +++ b/lab-32/pom.xml @@ -17,6 +17,7 @@ lab-32-activemq-demo-message-model lab-32-activemq-demo-delay lab-32-activemq-demo-concurrency + lab-32-activemq-demo-orderly