先创建队列 my
代码实现-消息生产者
(1)创建工程rabbitmq_demo,引入amqp起步依赖 ,pom.xml如下:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
(2)编写配置文件application.yml
spring:
rabbitmq:
host: 192.168.223.128
(3)编写启动类
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class);
}
}
在test下java下编写测试类
@RunWith(SpringRunner.class)
@SpringBootTest(classes=Application.class)
public class MqTest {
@Autowired
private RabbitTemplate rabbitTemplate;
@Test
public void testSend(){
rabbitTemplate.convertAndSend("my","我要钱");
}
}
运行测试方法
代码实现-消息消费者
在启动类包下创建消费这包(名字随意),创建消费者类
@Component //放入容器中
@RabbitListener(queues="my" )//指定接收队列的名称
public class Customer1 {
@RabbitHandler
public void showMessage(String message){
System.out.println("my接收到消息:"+message);
}
}
(2)运行启动类,可以在控制台看到刚才发送的消息
测试
开启多个消费者工程,测试运行消息生产者工程,会发现只有一个消费者工程可以接收到消息。
如何在IDEA中多次启动同一个程序呢?
(1)选择IDEA右上角的类名称按钮
(2)选择Edit Configurations
(4)每次运行前修改application.yml,指定不同的端口
server:
port: 9202
运行后在控制台可以看到多个窗口