RabbitMQ的功能实现

1.消息通知
        因为queue的默认情况下是给消费者轮流分发消息的。当一个消费者挂了之后,还是会向它发送消息,这样的的话,就会造成消息的丢失。为了解决这个问题,RabbitMQ的方案是,设置参数,当消息发送给消费者后,消费者会回应queue。当queue收到信号后,才会把queue中的message删除。

      

boolean autoAck=false;//当autoAck为false的时候,当消费都收到信息后,会回复队列,我收到信息了。这样就不会造成队列的消息流失。
channel.basicConsume(QUEUE_NAME, autoAck, consumer);

2.消息持久
       刚刚解决了queue与消费者之间的消息丢失问题,但是如果RabbitMQ挂了,也会把queue中的消息丢失。所以在rabbitMQ要做消息的持久化。当RabbitMQ挂了之后restart,现从硬盘中读取数据。

    设置方案:

      

boolean durable = true;
channel.queueDeclare("hello", durable, false, false, null);
    注意:

    当rabbitMQ有名这hello的队列后,就不会更改了。如果更改的话会报错

3.消息失败分发

       当autoACk的值为false的时候,同时consumer也很忙在处理事情。RabbitMQ把消息分发给consumer的话。这样也会造成消息的丢失。那么我们可以通过设置,记RabbitMQ把消息分发给有空的cumsuer

int prefetchCount = 1;
channel.basicQos(prefetchCount);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值