springboot中rabbitMQ的使用

一、rabbitMQ有三种类型 direct、topic、fanout三种类型

1:direct类型是交换器和路由key完全匹配进行绑定的

例如:

消费端配置:

 

消费端代码:

@Component

@RabbitListener(bindings=@QueueBinding(

value= @Queue(value="${mq.config.queue.error}",autoDelete="false"),

exchange=@Exchange(value="${mq.config.exchange}",type=ExchangeTypes.DIRECT),

key="${my.config.queue.error.routing.key}"

))

public class RabbitMQDirectErrorConsumer {

 

@RabbitHandler

public void recevier(String msg) {

System.out.println("receiver ===error==========="+msg);

 

}

 

}

消息提供端配置:

消息提供端代码:

@Value("${mq.config.direct.exchange}")

private String exchange;

 

@Autowired

private AmqpTemplate amqpTemplate;

 

public void sendErrorDirect() {

 

String msString = "hello" + new Date();

 

this.amqpTemplate.convertAndSend(exchange,"error.routing.key",msString);//路由key

}

 

 

 

2:topic通过交换器和模糊匹配路由key绑定

例如:

消费端配置:

消费端代码:

1:@Component

@RabbitListener(bindings=@QueueBinding(

value= @Queue(value="${mq.config.queue.debug}",autoDelete="false"),

exchange=@Exchange(value="${mq.config.exchange}",type=ExchangeTypes.TOPIC),

key="*.log.debug"

))

public class RabbitMQTopicDebugConsumer {

 

@RabbitHandler

public void recevier(String msg) {

System.out.println("receiver ===debug==========="+msg);

 

}

 

}

2:@Component

@RabbitListener(bindings=@QueueBinding(

value= @Queue(value="${mq.config.queue.logs}",autoDelete="false"),

exchange=@Exchange(value="${mq.config.exchange}",type=ExchangeTypes.TOPIC),

key="*.log.*"

))

public class RabbitMQTopicLogsConsumer {

 

@RabbitHandler

public void recevier(String msg) {

System.out.println("receiver ===all==========="+msg);

}

 

}

 

消息提供端配置:

 

 

3:fanout 广播机制使用,通过交换器绑定的

例如:

消费端配置:

 

1、

2、

消息提供端配置:

 

代码:

 

不需要路由key值

 

二、rabbitMQ的持久化

 

就是将autoDelete="false"

 

三、rabbitMQ的ack,确认机制

只有消费者正常消费信息了,rabbitMQ才会把队列里面的消息给删除掉,如果消费者再消费信息的时候出现了异常,则会重复无限的发布消息。直到内存泄漏。故在使用的时候要注意

解决方法有2种:

1、在抛出异常的地方用try catach捕获异常

2、在配置文件中如下配置(推荐):

#rabbitMQ重试机制

spring.rabbitmq.listener.simple.retry.enabled=true

#重试默认的次数5

spring.rabbitmq.listener.simple.retry.max-attempts=5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值