2017-02-22 8 views
3

I have read TTLが期限切れになった場合にRabbitMQサーバによってキューからメッセージが消去されるように、RabbitMQ(キューごと)でTTLを設定することができます。有効期限切れのTTLを持つメッセージは処理されないことをサーバーが保証することに注意してください。Servicestackを使用してRabbitMQキューのTTLを設定する

私はservice stack to connect to various rabbitMq'sを使用しています。具体的には、私はRPC機能rabbitMQが提供するファサードとして機能するためにそれを使用しています。

キューのTTLが宣言されたときに、その情報を見つけることができません(また、コードサポートも参照)。私が見る限り、キューの作成はサービススタック実装に組み込まれています。これは、トランスポートレイヤに関係なく単純化されたサービス抽象化を提供するために、多くのキューの詳細を抽象化します。

これを行うことは可能ですか(サービススタックを使用してウサギMQにTTLを設定することはできますか)、またはこれを将来行うことは可能でしょうか?

答えて

3

私はあなたが例えば、新しいCreateQueueFilterで指定することができたとあなたがオプションラビットMQキューのトピックが作成されます内容をカスタマイズできるようになるフィルタを追加しました:

container.Register<IMessageService>(c => 
    new RabbitMqServer(ConnectionString) 
    { 
     CreateQueueFilter = (queueName, args) => 
     { 
      if (queueName == QueueNames<MyRequest>.In) 
      { 
       args["x-message-ttl"] = 60000; 
      } 
     } 
    }); 

この変更はV4から入手可能です。 5.7+は今やavailable on MyGetです。

+2

あなたは私のヒーローです。真剣に!ありがとう! – Jay

関連する問題