一:生产者
1、导入依赖
2、新建配置文件application.yml
3、新建启动项ProviderApplication
4、新建配置类来创建队列、交换机,并绑定起来
代码奉上:
依赖pom.xml:
org.springframework.boot spring-boot-starter-parent2.5.7 com.zhao 1.0-SNAPSHOT 4.0.0 springboot-rabbitmq-producerorg.springframework.boot spring-boot-starter-amqporg.springframework.boot spring-boot-starter-test
配置文件application.yml:
spring: rabbitmq: host: 192.168.0.110 port: 5672 username: bqsd password: xj virtual-host: /bqsd
配置启动项:
@SpringBootApplication public class ProducerApplication { public static void main(String[] args) { SpringApplication.run(ProducerApplication.class); } }
配置类:
@Configuration public class RabbitMQConfig { //声明交换机 @Bean(name = "itemExchange") public Exchange topicExchange(){ return ExchangeBuilder.topicExchange("item_ex").durable(true).build(); } //声明队列 @Bean(name = "itemQueue") public Queue itemQueue(){ return QueueBuilder.durable("item_queue").build(); } //队列绑定到交换机上 @Bean public Binding itemQueueExchange(@Qualifier("itemQueue") Queue queue, @Qualifier("itemExchange") Exchange exchange){ return BindingBuilder.bind(queue).to(exchange).with("item.#").noargs(); } }
****注意队列名和交换机的名字要记住
二、消费者:
1、导入依赖
2、新建配置文件application.yml
3、新建启动项
4、创建监听类
代码奉上:
1、导入依赖
org.springframework.boot spring-boot-starter-parent2.5.7 com.zhao 1.0-SNAPSHOT 4.0.0 springboot-rabbitmq-consumerorg.springframework.boot spring-boot-starter-amqp
2、配置文件 :
spring: rabbitmq: host: 192.168.0.110 virtual-host: /bqsd username: bqsd password: xj port: 5672
3、启动类:
@SpringBootApplication public class ConsumerApplication { public static void main(String[] args) { SpringApplication.run(ConsumerApplication.class); } }
4、监听类:
@Component public class MessageListener { @RabbitListener(queues = "item_queue") public void myListener1(String message){ System.out.println("消费者接收到的消息为:" + message); } }
至此生产者和消费者就完成了,我们可以在生产者项目里创建测试类来看看是否成功
//@RunWith(SpringRunner.class) 2.5.7 版本已经不用这个注解了 @SpringBootTest public class RabbitMQTest { //用于发送MQ消息 @Autowired private RabbitTemplate rabbitTemplate; //消息生产测试 @Test public void testCreateMessage(){ rabbitTemplate.convertAndSend("item_ex", "item.insert", "商品新增,routing key 为item.insert"); rabbitTemplate.convertAndSend("item_ex", "item.update", "商品修改,routing key 为item.update"); rabbitTemplate.convertAndSend("item_ex", "item.delete", "商品删除,routing key 为item.delete"); } }
*****注意测试类的目录结构要和项目一致
先打开测试类发送消息,再打开消费者启动项,即可查看到结果
小插曲:之前我用的是springboot2.1.4.RELEASE版本,从RabbitMQ网页端发送消息时接收的信息为数字,要在网页端修改网页头才能正常显示,而2.5.7则不用,测试类也不用加上@RunWith(SpringRunner.class)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)