您的位置:首页 > 编程语言 > Java开发

rabbitmq学习(五):springboot整合rabbitmq

2018-12-03 15:37 741 查看

一、Springboot对rabbitmq的支持

springboot提供了对rabbitmq的支持,并且大大简化了rabbitmq的相关配置。在springboot中,框架帮我们将不同的交换机划分出来,这样使我们的编程变得更加清晰易于理解。

所需要的依赖为:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

二、代码实现

1.创建springboot项目

我的项目目录如下:

 

 

 

2.代码实现

1.在springboot中,rabbitmq的连接信息配置在application.properties中

spring.rabbitmq.host=localhost
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.port=5672
//直连交换机的确认机制
spring.rabbitmq.listener.direct.acknowledge-mode=auto

 2.先在配置类中声明队列、交换机以及交换机和队列的绑定关系。下面配置为直连交换机的配置

/**
* 基础配置类
*/
@Configuration("directRabbitConfig")
public class RabbitConfig {
/**
* 定义队列
* @return
*/
@Bean
public Queue queue(){
return new Queue("directQueue",false,false,false);
}

/**
* 定义直连交换机
* @return
*/
@Bean
public DirectExchange directExchange(){
return new DirectExchange("directExchange",false,false);
}

/**
* 定义交换机和队列之间的绑定关系
* @return
*/
@Bean
public Binding binding(){
return BindingBuilder.bind(queue()).to(directExchange()).with("directRoutingKey");
}
}

 3.消费者代码

/**
* 消费者
*/
@Component
public class DirectConsumer {
/**
* 监听directQueue中的消息
* @param message
*/
@RabbitListener(queues = "directQueue")
public void receive(String message){
System.out.println("DirectConsumer receive message " + message);
}
}

 我们可以看到在spring boot中是通过监听器注解并指明获取消息的队列的名称来接收消息的。

4.生产者代码

/**
* 生产者
*/
@Component
public class DirectProducer {
/**
* 注入amqpTempalte发送消息
*/
@Autowired
public AmqpTemplate template;

public void send(String message){
template.convertAndSend("directExchange","directRoutingKey", message);
System.out.println("Producer send message " + message);
}
}

 

发布消息通过注入AmqpTmeplate来实现。

5.测试:编写测试类,发送消息

@RunWith(SpringRunner.class)
@SpringBootTest
public class DirectExchangeTest {

@Autowired
private DirectProducer producer;

@Test
public void contextLoads() {
producer.send("directExchange message test");
}

}

 

查看日志可以看到我们的消息被路由到了队列,并成功的被接收到了

剩下的扇形交换机和主题交换机的实现方式和直连交换机的非常相似,这里就不把代码详细列出了。代码的github地址为:https://github.com/wutianqi/springboot-rabbitmq.git

参考资料:https://www.geek-share.com/detail/2700225740.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: