Bootstrap

rabbitmq在项目中的使用

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,用于将产生的订单发送到rabbitMQ消息队列

	/**
	 * 在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

A7lo-1625037081987)]

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

[外链图片转存中…(img-ZskDgcTx-1625037081987)]

[外链图片转存中…(img-7oyLWuVw-1625037081988)]

;