SpringBoot整合RabbitMQ详解

tech2024-11-22  19

SpringBoot整合RabbitMQ

producer

导入依赖

<!-- 1. 父工程依赖 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.4.RELEASE</version> </parent> <dependencies> <!--2. rabbitmq--> <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> </dependency> </dependencies>

配置文件application.yml

# 配置RabbitMQ的基本信息 ip 端口 username password.. spring: rabbitmq: host: 192.168.33.129 # ip port: 5672 username: gmx password: gmx virtual-host: /it

JavaConfig方式声明队列、交换信息

@Configuration public class RabbitMQConfig { public static final String EXCHANGE_NAME = "boot_topic_exchange"; public static final String QUEUE_NAME = "boot_queue"; //1.声明交换机构建器 @Bean("bootExchange") public Exchange bootExchange(){ return ExchangeBuilder.topicExchange(EXCHANGE_NAME).durable(true).build(); } //2.声明queue构建器 @Bean("bootQueue") public Queue bootQueue(){ return QueueBuilder.durable(QUEUE_NAME).build(); } //3. 声明绑定关系构建器 队列和交互机绑定关系 Binding /* 1. 知道哪个队列 2. 知道哪个交换机 3. routing key with指定routing key */ @Bean public Binding bindQueueExchange(@Qualifier("bootQueue") Queue queue, @Qualifier("bootExchange") Exchange exchange){ return BindingBuilder.bind(queue).to(exchange).with("boot.#").noargs(); } }

创建启动类

@SpringBootApplication public class ProducerApplication { public static void main(String[] args) { SpringApplication.run(ProducerApplication.class); } }

消息发送测试

@SpringBootTest @RunWith(SpringRunner.class) public class ProducerTest { //1.注入RabbitTemplate完成消息发送 @Autowired private RabbitTemplate rabbitTemplate; @Test public void testSend(){ rabbitTemplate.convertAndSend(RabbitMQConfig.EXCHANGE_NAME,"boot.haha","boot mq hello~~~"); } }

consumer

导入依赖

<dependencies> <!--RabbitMQ 启动依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> </dependencies>

配置文件application.yml

spring: rabbitmq: host: 192.168.33.129 #主机ip port: 5672 #端口 username: gmx password: gmx virtual-host: /it publisher-confirms: true publisher-returns: true

接受消息

@Component public class RabbimtMQListener { @RabbitListener(queues = "boot_queue") public void ListenerQueue(Message message, Channel channel){ //System.out.println(message); System.out.println(new String(message.getBody())); } }

创建启动类

@SpringBootApplication public class ConsumerSpringbootApplication { public static void main(String[] args) { SpringApplication.run(ConsumerSpringbootApplication.class, args); } }
最新回复(0)