|
7
|
| Wojciech Kaczmarek · 技术社区 · 16 年前 |
|
|
1
6
您目前无法在rabbitmq(或者更一般地说,在amqp)中自动执行此操作。但是,这里有一个简单的解决方法。 假设您要发送三种类型的消息:xs、ys和zs。如果我正确理解了您的问题,那么当X消息到达时,您希望代理忽略所有其他尚未传递的X消息。 这在rabbitmq中很容易做到:
这意味着当两个生产者大约同时发送同一类型的消息时存在竞争条件。结果是,一个队列可能同时有两个(或更多)消息,但是由于消息的数量由生产者的数量上限,并且由于多余的消息在下一次发布时被清除,所以这不应该是一个很大的问题。 总而言之,此解决方案与最佳解决方案只有一个额外步骤,即在发布X类型的消息之前清除队列X。 如果您需要任何帮助来设置此配置,那么最好的咨询位置是rabbitmq讨论邮件列表。 |
|
|
2
9
不需要消息队列,需要键值数据库。例如,您可以使用redis或tokyo tyrant获得一个简单的网络可访问的键值数据库。或者使用memcache。 每种消息类型都是一个键。当使用相同的键编写新消息时,它将覆盖以前的值,因此此数据库的读卡器将永远无法获取过期信息。 此时,您只需要一个消息队列来确定读取密钥的顺序(如果这很重要的话)。否则,只需继续扫描数据库。如果继续扫描数据库,最好将数据库放在读卡器附近,以减少网络流量。
我可能会做这样的事
然后我会发送包含
如果您真的需要使用AMQP来实现这一点,那么可以使用rabbitmq和自定义交换类型,特别是最后一个值缓存交换。这里是示例代码 https://github.com/squaremo/rabbitmq-lvc-plugin |
|
|
3
2
这个问题因其标题而具有很高的知名度。通过描述可以找到更具体的场景。 因此,对于希望从队列中实际删除下一条(记住FIFO)消息的用户,可以使用rabbitmqadmin并发出以下命令:
这个命令基本上是在消耗消息,什么也不做。带有备份消息标志的完整命令可能如下所示。确保根据您的要求添加任何其他参数。
|
|
|
4
2
如果您只想从队列中删除前n条消息,那么它似乎也可以从rabbitmq Web UI中工作。
|
|
|
wahyu · 云消息API(旧版)已禁用[重复] 2 年前 |
|
|
Aman Sharma · 无法从mesibo中的组中删除成员 3 年前 |
|
|
littleK · RabbitMQ扇出交换机故障 13 年前 |
|
|
littleK · 使用ActiveMQ获得比RabbitMQ更好的性能 14 年前 |