RabbitMQ无脑式Demo

Demo

1. 新增用户

image-20230601104230795

image-20230601104337164

image-20230601104411726

image-20230601104436457

image-20230601104512831

2. 添加坐标

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

3. 添加配置文件

  rabbitmq:
    host: 192.168.200.128
    port: 5672
    username: java1126
    password: java1126
    virtual-host: /java1126

4. 发消息

1.使用方法

// 注入
@Autowired
private RabbitTemplate rabbitTemplate;
// 发送消息,使用的方法
rabbitTemplate.convertAndSend("交换机","规则","消息内容");
rabbitTemplate.convertAndSend("product_exchange", "sku.upper", skuId + "");
rabbitTemplate.convertAndSend("product_exchange", "sku.down", skuId + "");

2. 配置交换机,队列,绑定

例如:

import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/***
 * 商品管理微服务配置rabbit消息队列
 */
@Configuration
public class ProductRabbitConfig {
    /**
     * 创建交换机
     * import org.springframework.amqp.core.*;
     */
    @Bean("productExchange")
    public Exchange productExchange() {
        // directExchange:定向
        return ExchangeBuilder.directExchange("product_exchange").build();
    }

    /**
     * 创建上架队列
     * import org.springframework.amqp.core.*;
     */
    @Bean("productQueueUpper")
    public Queue productQueueUpper() {
        // durable:定向
        return QueueBuilder.durable("product_queue_upper").build();
    }

    /**
     * 创建下架队列
     * import org.springframework.amqp.core.*;
     */
    @Bean("productQueueDown")
    public Queue productQueueDown() {
        // durable:定向
        return QueueBuilder.durable("product_queue_down").build();
    }

    /**
     * 上架队列和交换机的绑定
     * @Qualifier:import org.springframework.beans.factory.annotation.Qualifier;
     * @param productExchange
     * @param productQueueUpper
     * @return
     */
    @Bean
    public Binding productUpperBinding(@Qualifier("productExchange") Exchange productExchange,
                                       @Qualifier("productQueueUpper") Queue productQueueUpper) {
        // 将队列绑定到交换机,使用"sku.upper"的规则
        // noargs(build)
        return BindingBuilder.bind(productQueueUpper).to(productExchange).with("sku.upper").noargs();
    }

    /**
     * 下架队列和交换机的绑定
     * Qualifier:import org.springframework.beans.factory.annotation.Qualifier;
     * @param productExchange
     * @param productQueueDown
     * @return
     */
    @Bean
    public Binding productDownBinding(@Qualifier("productExchange") Exchange productExchange,
                                      @Qualifier("productQueueDown") Queue productQueueDown) {
        // 将队列绑定到交换机,使用"sku.down"的规则
        // noargs(build)
        return BindingBuilder.bind(productQueueDown).to(productExchange).with("sku.down").noargs();
    }
}

此时启动服务测试,是否发送成功

image-20230601112137435

image-20230601112236743

image-20230601112320723

image-20230601112433544

image-20230601112633508

5. 测试成功,接受消息

1. 接收端配置坐标

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

2. 接收端配置文件

  rabbitmq:
    host: 192.168.200.128
    port: 5672
    username: java1126
    password: java1126
    virtual-host: /java1126

接收端微服务新建监听文件

import lombok.extern.log4j.Log4j2;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

/***
 * 监听商品管理微服务上下架消费者
 */
@Component
@Log4j2
public class SkuMessageListener {
    // 注明消费者
//    @RabbitListener(queues = {"监听队列1,","监听队列2"})--》如下获取

    /**
     * 监听上架消息
     *
     * @param msg
     */
    @RabbitListener(queues = "product_queue_upper")
    public void skuUpperMessageListener(String msg) {
        System.out.println("上架商品的id为:" + msg);
    }

    /**
     * 监听下架消息
     *
     * @param msg
     */
    @RabbitListener(queues = "product_queue_down")
    public void skuDownMessageListener(String msg) {
        System.out.println("下架商品的id为:" + msg);
    }
}

image-20230601141737955

image-20230601141821970

完成启动微服务,测试是否接受到消息

image-20230601140026072

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值