rabbit_auth_cache behaviour
This commit is contained in:
		
							parent
							
								
									e2b27f5e15
								
							
						
					
					
						commit
						118a6648ec
					
				|  | @ -59,7 +59,8 @@ You can configure TTL for cache items, by using `cache_ttl` configuration item, | |||
|                                     {cache_ttl, 5000}]}]. | ||||
| 
 | ||||
| You can also use a custom cache module to store cached requests. This module | ||||
| should be an erlang module implementing `rabbit_auth_cache` behaviour. | ||||
| should be an erlang module implementing `rabbit_auth_cache` behaviour and (optionally) | ||||
| define `start_link` function to start cache process. | ||||
| 
 | ||||
| This repository contains three such modules: | ||||
| 
 | ||||
|  | @ -70,6 +71,7 @@ This repository contains three such modules: | |||
| 
 | ||||
| To specify module for caching you should use `cache_module` configuration item and  | ||||
| specify start args with `cache_module_args`. | ||||
| Start args should be list of arguments passed to module `start_link` function | ||||
| 
 | ||||
|     [{rabbitmq_auth_backend_cache, [{cache_module, rabbit_auth_backend_ets_segmented}, | ||||
|                                     {cache_module_args, [10000]}]}]. | ||||
|  |  | |||
|  | @ -33,6 +33,12 @@ stop(_State) -> | |||
| init([]) -> | ||||
|     {ok, AuthCache} = application:get_env(rabbitmq_auth_backend_cache, | ||||
|                                           cache_module), | ||||
| 
 | ||||
|     {ok, AuthCacheArgs} = application:get_env(rabbitmq_auth_backend_cache, cache_module_args), | ||||
|     {ok, {{one_for_one,3,10},[{auth_cache, {AuthCache, start_link, AuthCacheArgs}, | ||||
|                                permanent, 5000, worker, [AuthCache]}]}}. | ||||
|     ChildSpecs = case erlang:function_exported(AuthCache, start_link,  | ||||
|                                                length(AuthCacheArgs)) of | ||||
|         true  -> [{auth_cache, {AuthCache, start_link, AuthCacheArgs}, | ||||
|                   permanent, 5000, worker, [AuthCache]}]; | ||||
|         false -> [] | ||||
|     end, | ||||
|     {ok, {{one_for_one,3,10}, ChildSpecs}}. | ||||
|  |  | |||
|  | @ -0,0 +1,37 @@ | |||
| %% The contents of this file are subject to the Mozilla Public License | ||||
| %% Version 1.1 (the "License"); you may not use this file except in | ||||
| %% compliance with the License. You may obtain a copy of the License | ||||
| %% at http://www.mozilla.org/MPL/ | ||||
| %% | ||||
| %% Software distributed under the License is distributed on an "AS IS" | ||||
| %% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See | ||||
| %% the License for the specific language governing rights and | ||||
| %% limitations under the License. | ||||
| %% | ||||
| %% The Original Code is RabbitMQ. | ||||
| %% | ||||
| %% The Initial Developer of the Original Code is GoPivotal, Inc. | ||||
| %% Copyright (c) 2007-2016 Pivotal Software, Inc.  All rights reserved. | ||||
| %% | ||||
| 
 | ||||
| -module(rabbit_auth_cache). | ||||
| 
 | ||||
| -ifdef(use_specs). | ||||
| 
 | ||||
| -callback get(term()) -> term(). | ||||
| 
 | ||||
| -callback put(term(), term(), integer()) -> ok. | ||||
| 
 | ||||
| -callback delete(term()) -> ok. | ||||
| 
 | ||||
| -else. | ||||
| 
 | ||||
| -export([behaviour_info/1]). | ||||
| 
 | ||||
| behaviour_info(callbacks) -> | ||||
|     [{get, 1}, {put, 3}, {delete, 1}]; | ||||
| behaviour_info(_Other) -> | ||||
|     undefined. | ||||
| 
 | ||||
| -endif. | ||||
| 
 | ||||
|  | @ -19,6 +19,8 @@ | |||
| -compile({no_auto_import,[get/1]}). | ||||
| -compile({no_auto_import,[put/2]}). | ||||
| 
 | ||||
| -behaviour(rabbit_auth_cache). | ||||
| 
 | ||||
| -export([start_link/0, | ||||
|          get/1, put/3, delete/1]). | ||||
| 
 | ||||
|  |  | |||
|  | @ -18,7 +18,8 @@ | |||
| -behaviour(gen_server2). | ||||
| -compile({no_auto_import,[get/1]}). | ||||
| -compile({no_auto_import,[put/2]}). | ||||
| -compile(export_all). | ||||
| 
 | ||||
| -behaviour(rabbit_auth_cache). | ||||
| 
 | ||||
| -export([start_link/0, | ||||
|          get/1, put/3, delete/1]). | ||||
|  |  | |||
|  | @ -16,6 +16,7 @@ | |||
| 
 | ||||
| -module(rabbit_auth_cache_ets_segmented). | ||||
| -behaviour(gen_server2). | ||||
| -behaviour(rabbit_auth_cache). | ||||
| 
 | ||||
| -export([start_link/1, | ||||
|          get/1, put/3, delete/1]). | ||||
|  |  | |||
|  | @ -16,6 +16,7 @@ | |||
| 
 | ||||
| -module(rabbit_auth_cache_ets_segmented_stateless). | ||||
| -behaviour(gen_server2). | ||||
| -behaviour(rabbit_auth_cache). | ||||
| 
 | ||||
| -export([start_link/1, | ||||
|          get/1, put/3, delete/1]). | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue