没有消费时如何丢弃队列消息?(ActiveMQ)
Posted
技术标签:
【中文标题】没有消费时如何丢弃队列消息?(ActiveMQ)【英文标题】:How to drop queue message when there is no consume?(ActiveMQ) 【发布时间】:2015-03-17 01:55:15 【问题描述】:使用 ActiveMQ: 塞纳里奥: 服务器将通过队列向客户端发送许多消息。 但是,如果没有消费者(客户端),我需要将消息放入队列中
提前致谢!
【问题讨论】:
如果没有消费者,需要 ActiveMQ 丢弃队列中的所有消息。我知道这个话题是这样的,但是,我只有一个消费者。 【参考方案1】:在每条消息上设置一个JMSExpiration
一段时间(30 秒?5 分钟?),然后在这段时间之后没有被消费的任何消息(无论是因为没有消费者还是因为消费者落后)将被发送到 DLQ。或者,如果您不想在 DLQ 中使用它,则将死信策略配置为设置 processExpired=false
或使用 Discarding DLQ 插件,两者均记录在 http://activemq.apache.org/message-redelivery-and-dlq-handling.html。
【讨论】:
如果生产者不能/不会设置它...activemq.apache.org/timestampplugin.html【参考方案2】:您可以使用非持久消息传递,如果没有活动的消费者,则消息被丢弃。
另一种选择可能是使用消息过期,因此如果消息没有从队列中消耗,则消息将在 X 周期后过期。
【讨论】:
谢谢。 hot to use none persistent ?从活跃的 MQ 主页,activemq.apache.org/persistence.html 当使用以上是关于没有消费时如何丢弃队列消息?(ActiveMQ)的主要内容,如果未能解决你的问题,请参考以下文章
ActiveMQ 消息消费者不主动监听消息队列是不是有消息,只监听是是不是有消息进去消息队列