RabbitMQ配置工作模式

简单模式和工作模式:

1.导包

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

2.配置文件

spring:
  #RabbitMQ
  rabbitmq:
    #服务器地址和端口
    host: 192.168.220.128 
    port: 5672

    #账号和密码
    username: admin
    password: 123456 #

    #虚拟主机,从控制台对应的账号下面找
    virtual-host: /

3.配置类

@Configuration
public class RabbitConf {
    @Bean  //Queue包:import org.springframework.amqp.core.Queue;
    public Queue queueT1(){
        //public Queue(String name, boolean durable, boolean exclusive, boolean autoDelete)
        //durable:是否持久化
        //exclusive:默认false,只能在当前创建连接时使用,连接关闭后队列自动删除,该优先级高于durable
        //autoDelete:是否自动删除,当没有生产者或消费者使用该交换机时,会自动删除
        return new Queue("queue1");
    }
}

4.生产者

@RestController
@RequestMapping("testRabbitMQ")
public class Producer {
    @Autowired
    private AmqpTemplate amqpTemplate;
    @GetMapping
    public String sendMSG(){
        ResultObject resultObject = new ResultObject(100, "发送成功", "data...");
        amqpTemplate.convertAndSend("queue1",resultObject);
        return "发送成功";
    }
}

5.消费者

@Component
public class Consumer {
    @RabbitListener(queues = "queue1")
    @RabbitHandler
    public void receiveMsg(ResultObject resultObject){
        System.out.println(resultObject);
    }
}

以上是简单模式和工作模式,工作模式只需要创建多个消费者即可

注意:每个生产者都需要导包、配置文件、配置类,每个消费者需要导包、配置文件

配置订阅模式:

配置类

/*订阅发布模式*/
@Bean
public Queue queue2(){
    return new  Queue("queue2");
}
//配置订阅模式交换机
@Bean
public FanoutExchange ex1(){
    //public FanoutExchange(String name, boolean durable, boolean autoDelete)
    // durable:是否持久化
    //autoDelete:是否自动删除,当没有生产者或消费者使用该交换机时,会自动删除
     return new FanoutExchange("ex1");
}
//绑定队列(需要发布多少个队列就绑定多少个队列)
@Bean
public Binding bindingQ2Ex1(Queue queue2,FanoutExchange ex1){
    return BindingBuilder.bind(queue2).to(ex1);
}

生产者

@GetMapping("/test2")
public String sendMSG2(){
    ResultObject resultObject = new ResultObject(100, "发送成功", "data...");
    amqpTemplate.convertAndSend("ex1","",resultObject);
    return "发送成功";
}

消费者不变

配置路由模式:

配置类

/*路由模式*/
@Bean
public Queue queue3(){
    return new Queue("queue3");
}
@Bean
public Queue queue4(){
    return new Queue("queue4");
}
//配置路由模式交换机
@Bean
public DirectExchange ex2(){
    return new DirectExchange("ex2");
}
//绑定队列,将队列3绑定到路由交换机上并且设置key为key1
@Bean
public Binding bindingEx2Q3(Queue queue3,DirectExchange ex2){
    return BindingBuilder.bind(queue3).to(ex2).with("key1");
}
//将队列4绑定到路由交换机上并且设置key为key2
@Bean
public Binding bindingEx2Q4(Queue queue4,DirectExchange ex2){
    return BindingBuilder.bind(queue4).to(ex2).with("key2");
}

生产者

//路由模式发布消息
@GetMapping("/test3")
public String sendMSG3(){
    amqpTemplate.convertAndSend("ex2","key1","发送到key为:key1的队列中");
    amqpTemplate.convertAndSend("ex2","key2","发送到key为:key1的队列中");
    return "发送成功";
}

消费者

消费者只需要消费对应队列即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RabbitMQ是一个开源的消息队列中间件,它提供了可靠的消息传递机制,适用于分布式系统之间的通信和解耦。 要配置RabbitMQ使用普通模式,需要遵循以下步骤: 1. 安装和启动RabbitMQ服务器:首先,需要在本地计算机或服务器上安装RabbitMQ。安装完成后,启动RabbitMQ服务器,以便可以开始配置。 2. 创建虚拟主机:虚拟主机用于隔离不同的应用程序或服务。可以通过RabbitMQ的管理界面或命令行工具创建虚拟主机,并为其分配一个名称和访问权限。 3. 创建队列:在虚拟主机下创建队列,用于存储和传递消息。可以指定队列的名称和其他属性,如持久性和自动删除等。 4. 创建生产者和消费者:生产者负责向队列发送消息,消费者负责从队列中接收消息并进行处理。可以使用任何支持AMQP协议的编程语言来创建生产者和消费者。 5. 发送和接收消息:生产者通过发送消息将其放入队列中,消费者则通过订阅队列并接收消息来处理它们。可以使用队列的名称和虚拟主机的地址来指定发送和接收消息的目标。 6. 配置消息确认:为了确保消息传递的可靠性,可以配置消息确认。生产者可以设置确认模式,以便在消息被成功接收时得到通知,并在必要时重新发送消息。 通过以上步骤,就可以配置并使用RabbitMQ的普通模式了。需要注意的是,为了确保消息的可靠性和性能,还需要根据实际需求调整RabbitMQ配置参数,如队列大小、消息预取和持久性等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值