rabbitmq在项目中的使用

1启动rabbitmq

在虚拟机中启动rabbitmq

image-20210630095632261

2添加依赖

在项目中添加依赖

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

3配置连接

配置rabbitmq的连接

rabbitmq:
  host: 192.168.126.17
  port: 5672
  username: admin
  password: admin

配置内容是在spring的配置下

image-20210630095851568

4创建队列

在主程序中

//新建一个用来封装队列参数的对象,放入spring容器
//rabbitmq自动配置类会发现这个对象,使用其中的参数
//来创建队列
@Bean
public Queue orderQueue(){
   return new Queue("orderQueue",true);
}

image-20210630100044432

5生产订单

在OrderServiceImpl中注入RabbitAutoConfigtion配置类AmqpTemplate

	/**
	 * 在RabbitAutoConfigtion自动配置类
	 * 已经创建了AmqpTemplate实例
	 * 在这里直接注入
	 */
	@Autowired
	private AmqpTemplate t;

image-20210630101032462

不执行订单业务,将订单发给rabbit消息队列

public String saveOrder(PdOrder pdOrder) throws Exception {
		String orderId = generateId();
		pdOrder.setOrderId(orderId);

		//不在直接执行数据操作,而是改成向rabbitmq发送订单对象
		t.convertAndSend("orderQueue",pdOrder);
}

image-20210630101216113

在系统上下发一条订单

image-20210630101342968

可以看到rabbitmq上存了一条消息

image-20210630101448500

6创建消费者

在消费者系统中同样添加依赖

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

添加配置信息

  rabbitmq:
    host: 192.168.126.17
    port: 5672
    username: admin
    password: admin

image-20210630101704216

创建消费者类

/**
 * 基础配置 1.依赖,2.连接,3.队列
 *
 *
 *消费者从orderQueue接收订单,
 * 调用业务代码,完成订单存储
 */
@RabbitListener(queues = "orderQueue")
@Component
public class OrderComsumer {

    @Autowired
    private OrderService orderService;

    @RabbitHandler //配合RabbitListener,指定处理消息的方法
    public void receive(PdOrder order) throws Exception {
        orderService.saveOrder(order);
        System.out.println("订单已存储,id="+order.getOrderId());
    }
}

在此项目中完成对订单的消费

image-20210630150433464

启动项目就可以把存在rabbitMQ中的订单给消费掉

image-20210630150603172

image-20210630150635687

g-w5Oe6xpS-1625036847376)]

启动项目就可以把存在rabbitMQ中的订单给消费掉

[外链图片转存中…(img-UJld8yV5-1625036847377)]

[外链图片转存中…(img-6ZtyoUvH-1625036847378)]

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐