Rabbitmq 当消息数量达到阈值时,是否可能得到“推送”?

Rabbitmq 当消息数量达到阈值时,是否可能得到“推送”?,rabbitmq,push,message-queue,messaging,threshold,Rabbitmq,Push,Message Queue,Messaging,Threshold,我想查查 获取队列中消息数的最佳实践是什么。 我知道我可以通过queue.getMessageCount获得它 我也知道你可以像监视器插件那样得到它。它是http请求吗?或者使用rabbitmqctl application.JNI? 如果我只想在收到X条消息时做出反应,那么最好的方法是什么? 更重要的是,我可以通过推送获取队列中的消息数吗? 我可以声明接收推送通知的阈值吗? e、 g.每次我有5000条消息时都会收到一个信号您可以使用队列x-max-length 队列长度是一种考虑就绪消息的度

我想查查

获取队列中消息数的最佳实践是什么。 我知道我可以通过queue.getMessageCount获得它 我也知道你可以像监视器插件那样得到它。它是http请求吗?或者使用rabbitmqctl application.JNI? 如果我只想在收到X条消息时做出反应,那么最好的方法是什么? 更重要的是,我可以通过推送获取队列中的消息数吗? 我可以声明接收推送通知的阈值吗? e、 g.每次我有5000条消息时都会收到一个信号

您可以使用队列x-max-length

队列长度是一种考虑就绪消息的度量,忽略未确认消息和消息大小。一旦达到限制,消息将从队列前面丢弃或写上死信,以便为新消息腾出空间

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()

    }
因此,您可以配置并管理被超出限制拒绝的邮件

原因是一个名称,描述了邮件的死信原因,是以下原因之一: 拒绝-消息被拒绝,requeue=false, expired-消息的TTL已过期;或 maxlen-超过了允许的最大队列长度

我希望有帮助

编辑**

这个想法可以是:

订阅一个队列,例如DLE上的队列,因此当消息到达时,表示您的消息已到达

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始终在运行,您的应用程序在到达时触发批量功能。

谢谢。我看不出它如何能帮助我处理散货。你的意思是我可以订阅DLE中的一个队列,然后在消息到达时开始使用已填充的原始队列?然后将消息从dle移回队列?也许我没有理解…@rails我修改了答案。我希望它能有所帮助。