# Redis做broker时采用订阅发布模式数据丢失问题

**URL:** <https://discuss.elastic.co/t/redis-broker/68901>\
**Category:** 中文提问与讨论\
**Created:** [December 13, 2016, 4:11pm UTC](https://discuss.elastic.co/t/redis-broker/68901 "2016-12-13T16:11:59Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![sockaddr\_in](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/sockaddr_in/32/20854_2.png) [@sockaddr\_in](https://discuss.elastic.co/u/sockaddr_in)\
**Post date:** [December 13, 2016, 4:11pm UTC](https://discuss.elastic.co/t/redis-broker/68901/1 "2016-12-13T16:11:59Z")

</div>

使用redis的发布订阅模式，有个缺点就是这种方式虽然能保证每个进程能拿到相同的消息，  
但是如果发布者发送消息过快，而且在这一时刻数据量很大，那么会存在数据丢失问题，而且接收方还存在乱序现象。  
测试的时候分别发送1w和5k数据，发送1w条消息时有数据丢失现象，发送5k条消息时没有。

```
 请问大家在在使用redis作为broker时是怎么配置的，如果直接用生产者－消费者模式，那么多个logstash监听

```

同一个队列，进程直接存在竞争关系，导致每个进程的到的数据都不是完整的。但是用发布订阅模式的话如果日志  
刷新速率很快会导致数据丢失问题产生，请问有经验的前辈该怎么解决呢？目前的需求就是多个logstash监听同一  
个队列，都能获取到相同的数据。谢谢！

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [January 10, 2017, 4:12pm UTC](https://discuss.elastic.co/t/redis-broker/68901/2 "2017-01-10T16:12:05Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
