RabbitMq消息丢失解决方案

1、消息丢失的三种原因

  1. 生产者:生产者写消息失败、消息发送到RabbitMq但是内部接收失败。
  2. 消息队列:RabbitMq出现宕机,接收到的消息还在内存中,没有来得及消费,就会导致内存中的数据被搞丢啦。
  3. 消费者:消费者还没有来的急处理就发生了宕机。

1、解决消息丢失的方案。

1)解决生产者丢失
  1、RebbitMq事务
     缺点:事务机制是同步机制,生产者发送消息会同步阻塞卡主等待发送结果,导致吞吐量降低
public static void main(String[] args) throws IOException, TimeoutException {
   
        ConnectionFactory connectionFactory =new ConnectionFactory();
        Connection connection = connectionFactory.newConnection();
        //获取到channel
        Channel channel = connection.createChannel();
        //开启事务
        channel.txSelect();

        try {
   
            //伪代码
            channel.basicPublish("aa","aa", null,"aa".getBytes());
        } 

你可能感兴趣的:(消息队列,rabbitmq)