我想检查
我可以声明接收推送通知的阈值吗? (例如,每次有5000条消息时都会收到信号)
答案 0 :(得分:0)
您可以使用队列x-max-length
http://www.rabbitmq.com/maxlength.html
队列长度是一种考虑就绪消息的措施,忽略未确认的消息和消息大小。一旦达到限制,消息将从队列前面删除或以字母命名,以便为新消息腾出空间。
因此,您可以配置Dead Letter Exchanges并管理超出限制的拒绝邮件。
原因是一个名称描述了为什么消息是死信的,并且是以下之一: 被拒绝 - 邮件被requeue = false拒绝, 已过期 - 邮件的TTL已过期;要么 maxlen - 超出允许的最大队列长度。
我希望它有所帮助
修改** 强>
这个想法可能是:
在DLE上订阅例如_queue
的队列,以便在收到消息时意味着您已到达。
void hanlemymessage(msg){
.....
}
//// consumer _queue
public void handleDelivery(String consumerTag, Envelope envelope,
BasicProperties properties, byte[] body) throws java.io.IOException {
MyMessage m= new MyMessage(body)
voidhanlemymessage(m)
StartmyBulkConsumer()
}
现在您可以开始work_consumer
。
//// consumer work_queue
public void handleDelivery(String consumerTag, Envelope envelope,
BasicProperties properties, byte[] body) throws java.io.IOException {
MyMessage m= new MyMessage(body)
voidhanlemymessage(m)
if (msgcount.addandget()==mythreshold){
closeConsumer()
}
这可能是一种解决方案。
实际上我认为应该将此逻辑委托给应用程序:
例如,work_consumer
始终在运行,您的应用程序会在到达。