我正在尝试在一个只有一个生产者和一个使用者的模型中设置RabbitMQ,并且只有当使用者连接时,生产者发送的消息才传递给使用者,而如果消费者不存在则将其丢弃。
基本上,我希望队列在没有使用者连接时丢弃所有收到的消息。
另一个约束是,该队列必须在RabbitMQ服务器端声明,并且不能由使用者或生产者显式创建。
那可能吗?
我看了几件事,但似乎无法使它起作用:
auto_delete在队列上设置为true意味着我的客户端永远无法再连接到该队列。x-message-ttl并且max-length即使有消费者连接,也可能丢失消息。我正在寻找的效果将类似于auto_delete断开连接和auto_create连接。Rabbitmq中是否有一种机制可以让我做到这一点?
经过更多的研究,我发现问题中的一个假设x-message-ttl是错误的。我忽略了RabbitMQ文档中的一句话:
将TTL设置为0会导致消息在到达队列时过期,除非可以立即将其传递给使用者
事实证明,最简单的解决方案是将其设置x-message-ttl为0我的队列。
| 归档时间: |
|
| 查看次数: |
3710 次 |
| 最近记录: |