5

どちらからでもメッセージTTL(キューではない)を設定するにはどうすればよいですか

  • Exchange (交換は複数のキューに送信されます)
  • メッセージ(メッセージ公開時)
  • キュー (キュー自体にありますが、これはメッセージ TTL であり、キュー TTL ではありません)

私は RabbitMQ 3.x、Symfony 2.1.x、および RabbitMqBundle を実行しています

私が試したこと:

  • RabbitMQ 管理 UI からキュー自体を作成するときにメッセージ TTL を設定する

メッセージのプロパティを に設定しました'x-message-ttl' => 3600000。RabbitMQ 構成では、次のようになります。

{
    "name": "blah_queue",
    "vhost": "foobar",
    "durable": true,
    "auto_delete": false,
    "arguments": {
            'x-message-ttl' => 3600000
    }
},

これは私が得るエラーです:

PRECONDITION_FAILED - inequivalent arg 'x-message-ttl'for queue

config.yml に設定してみました(symfony/ https://github.com/videlvaro/RabbitMqBundle/README )

これにより、バンドルが使用する AMQP ライブラリで一連のエラーが発生します。

メッセージ プロパティを許可するように AMQP ライブラリ自体を変更しようとしましたx-message-ttlが、例外が発生しError sending dataました。

RabbitMQBundle を使用してメッセージ TTL を設定した人はいますか?

queue_options:    {name: 'blah_queue', arguments: {'x-message-ttl' => 3600000}}
4

2 に答える 2

1
queue_options:    {name: 'blah_queue', arguments: {'x-message-ttl' : ['I', '3600000']}}
于 2013-01-16T21:06:06.827 に答える
1

次のように、rabbitmq 管理コンソールからキュー メッセージの存続時間を設定できます。

  1. 私は Fedora Linux で RabbitMQ 3.1.5 を使用しています。ブラウザーでこれにアクセスしてください。

    http://your_rabbitmq_server.com:15672

  2. 「キュー」タブをクリックし、「新しいキューを追加」というところまでスクロールします。

  3. サブセクション: [新しいキューを追加] で、次のテキスト ボックスに入力します。

    Virtual host:             /
    Name:                     myqueue1
    Durability:               Durable
    Auto delete:              No
    Message TTL:     
    Auto expire: 
    Max length: 
    Dead letter exchange:
    Dead letter routing key: 
    
    Argument key      = x-message-ttl
    Argument value    = 3600000
    Argument datatype = number
    
  4. [OK] をクリックして保存します。

これでキューから消費できるようになり、メッセージは指定された時間だけそこに残ります。

于 2014-09-10T14:15:02.730 に答える