创建 SpringBoot 项目这里就不赘述了,我们直接看下面步骤
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
spring-boot-starter-amqp
依赖底层默认支持 rabbitmq,在 springboot 项目中如果要使用 rabbitmq,只需要应为 amqp 依赖即可,使用 rabbitmq 更加抽象,更加方便。
如下图所示:amqp 底层支持 rabbitmq 依赖
spring:
rabbitmq:
host: "localhost"
port: 5672
username: "admin"
password: "secret"
rabbitmq 相关配置都会被 RabbitProperties
配置类读取使用,并最终由 RabbitAutoConfiguration 自动配置类
使用,以上配置用于建立 CachingConnectionFactory
连接工厂的基础配置,更多配置在后面会一 一讲解使用。
RabbitMQ 相关配置以及 Exchange、Queue、Binding关系 等创建都建议放在配置类中统一管理,并且被 Spring 管理。这样项目在启动是这些配置就会生效。
@Configuration
public class RabbitMQConfig {
public static final String EXCHANGE_NAME = "order_exchange";
public static final String QUEUE_NAME = "order_queue";
/**
* 使用json序列化机制,进行消息转换
*
* @return
*/
@Bean
public MessageConverter messageConverter() {
return new Jackson2JsonMessageConverter();
}
/**
* 交换机
* @return
*/
@Bean
public Exchange orderExchange() {
return new TopicExchange(EXCHANGE_NAME, true, false);
}
/**
* 队列
* @return
*/
@Bean
public Queue orderQueue() {
return new Queue(QUEUE_NAME, true, false, false, null);
}
/**
* 交换机和队列绑定关系
*/
@Bean
public Binding orderBinding(Queue queue, Exchange exchange) {
return new Binding(QUEUE_NAME, Binding.DestinationType.QUEUE, EXCHANGE_NAME, "order.#", null);
}
}
@SpringBootTest
class DemoApplicationTests {
@Autowired
private RabbitTemplate template;
@Test
void send() {
template.convertAndSend(RabbitMQConfig.EXCHANGE_NAME,"order.new","订单来啦");
}
}
在 SpringBoot 中消息消息非常简单,只需要将 Rabbit 相关注解添加在类和方法上就可以消费消息
代码实现
@Component
@RabbitListener(queues = "order_queue")
public class OrderMQListener {
/**
* RabbitHandler 会自动匹配 消息类型(消息自动确认)
* @param msg
* @param message
* @throws IOException
*/
@RabbitHandler
public void releaseCouponRecord(String msg, Message message) throws IOException {
long msgTag = message.getMessageProperties().getDeliveryTag();
System.out.println("msgTag="+msgTag);
System.out.println("message="+message.toString());
System.out.println("监听到消息:消息内容:"+message.getBody());
}
}
# SpringBoot + Spring AMQP 整合 RabbitMQ
原文:https://www.cnblogs.com/dtdx/p/14371873.html