【问题标题】:RabbitMQ: How to delete/move messages in queue from curlRabbitMQ:如何从 curl 中删除/移动队列中的消息
【发布时间】:2015-11-05 04:14:38
【问题描述】:

我有多个 RabbitMQ 服务器。

我需要一个接口(使用 JSP),我可以在其中管理(删除队列/交换/消息)所有这些服务器。

在内部我会调用 curl 命令来执行操作。

示例:创建队列

curl -i -u test:test -H "content-type:application/json" \
    -XPUT -d'{"type":"direct","durable":true}' \
    http://192.168.0.30:15672/api/queues/%2f/myQueue

如何使用 curl 删除/移动队列中的消息?

【问题讨论】:

标签: curl rabbitmq rabbitmq-exchange rabbitmqctl


【解决方案1】:

RabbitMQ 没有直接从队列中删除消息的概念。使用 RabbitMQ 时,有许多不同的方法可以从队列中“删除”或“移动”消息。您可以使用 REST api 使用这些选项中的每一个。您可以使用队列中的消息,也可以使队列中的消息过期。

使用队列中的消息非常简单,有一些示例here. 要通过生存时间或队列大小使用到期,您可以设置 RabbitMQ 策略。 RabbitMQ 策略的文档是here.

【讨论】:

    【解决方案2】:

    【讨论】:

    • 引用下面邮件列表中提供的提示 - “也许你应该使用动态铲子,你可以通过 http API 建立它。”
    【解决方案3】:

    用卷曲制作的铲子可以完成这项工作:

    curl 
    -u  "user:password" 
    -vvv 'http://localhost:15672/api/parameters/shovel/%2Foms/Move%20from%20sourceQueue' 
    -X PUT 
    -H 'content-type: application/json' 
    --data-binary '
    {
        "component": "shovel",
        "vhost": "/vhost",
        "name": "Move from sourceQueue",
        "value": {
            "src-uri": "amqp:///%2Fvhost",
            "src-queue": "sourceQueue",
            "src-protocol": "amqp091",
            "src-prefetch-count": 1000,
            "src-delete-after": "queue-length",
            "dest-protocol": "amqp091",
            "dest-uri": "amqp:///%2Fvhost",
            "dest-add-forward-headers": false,
            "ack-mode": "on-confirm",
            "dest-queue": "destQueue"
        }
    }
    ' --compressed
    

    【讨论】:

    • 在 MacOS 上,我必须将 URL 放在末尾。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-20
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多