update to new rabbit_channel_interceptor api
This commit is contained in:
		
							parent
							
								
									e64fd71144
								
							
						
					
					
						commit
						41108985be
					
				|  | @ -4,7 +4,7 @@ | |||
| 
 | ||||
| -behaviour(rabbit_channel_interceptor). | ||||
| 
 | ||||
| -export([description/0, intercept/2, applies_to/1]). | ||||
| -export([description/0, intercept/3, applies_to/0, init/1]). | ||||
| 
 | ||||
| %% exported for tests | ||||
| -export([consumer_count/1]). | ||||
|  | @ -23,34 +23,37 @@ | |||
|                     {requires, rabbit_registry}, | ||||
|                     {enables, recovery}]}). | ||||
| 
 | ||||
| init(Ch) -> | ||||
|     rabbit_channel:get_vhost(Ch). | ||||
| 
 | ||||
| description() -> | ||||
|     [{description, <<"Sharding interceptor for channel methods">>}]. | ||||
| 
 | ||||
| intercept(#'basic.consume'{queue = QName} = Method, VHost) -> | ||||
| intercept(#'basic.consume'{queue = QName} = Method, Content, VHost) -> | ||||
|     case queue_name(VHost, QName) of | ||||
|         {ok, QName2} -> | ||||
|             Method#'basic.consume'{queue = QName2}; | ||||
|             {Method#'basic.consume'{queue = QName2}, Content}; | ||||
|         {error, QName} -> | ||||
|             precondition_failed("Error finding sharded queue for: ~p", [QName]) | ||||
|     end; | ||||
| 
 | ||||
| intercept(#'basic.get'{queue = QName} = Method, VHost) -> | ||||
| intercept(#'basic.get'{queue = QName} = Method, Content, VHost) -> | ||||
|     case queue_name(VHost, QName) of | ||||
|         {ok, QName2} -> | ||||
|             Method#'basic.get'{queue = QName2}; | ||||
|             {Method#'basic.get'{queue = QName2}, Content}; | ||||
|         {error, QName} -> | ||||
|             precondition_failed("Error finding sharded queue for: ~p", [QName]) | ||||
|     end; | ||||
| 
 | ||||
| intercept(#'queue.delete'{queue = QName} = Method, VHost) -> | ||||
| intercept(#'queue.delete'{queue = QName} = Method, Content, VHost) -> | ||||
|     case is_sharded(VHost, QName) of | ||||
|         true -> | ||||
|             precondition_failed("Can't delete sharded queue: ~p", [QName]); | ||||
|         _    -> | ||||
|             Method | ||||
|             {Method, Content} | ||||
|     end; | ||||
| 
 | ||||
| intercept(#'queue.declare'{queue = QName} = Method, VHost) -> | ||||
| intercept(#'queue.declare'{queue = QName} = Method, Content, VHost) -> | ||||
|     case is_sharded(VHost, QName) of | ||||
|         true -> | ||||
|             %% Since as an interceptor we can't modify what the channel | ||||
|  | @ -60,43 +63,41 @@ intercept(#'queue.declare'{queue = QName} = Method, VHost) -> | |||
|             %% arbitrary. | ||||
|             QName2 = rabbit_sharding_util:make_queue_name( | ||||
|                                       QName, a2b(node()), 0), | ||||
|             Method#'queue.declare'{queue = QName2}; | ||||
|             {Method#'queue.declare'{queue = QName2}, Content}; | ||||
|         _    -> | ||||
|             Method | ||||
|             {Method, Content} | ||||
|     end; | ||||
| 
 | ||||
| intercept(#'queue.bind'{queue = QName} = Method, VHost) -> | ||||
| intercept(#'queue.bind'{queue = QName} = Method, Content, VHost) -> | ||||
|     case is_sharded(VHost, QName) of | ||||
|         true -> | ||||
|             precondition_failed("Can't bind sharded queue: ~p", [QName]); | ||||
|         _    -> | ||||
|             Method | ||||
|             {Method, Content} | ||||
|     end; | ||||
| 
 | ||||
| intercept(#'queue.unbind'{queue = QName} = Method, VHost) -> | ||||
| intercept(#'queue.unbind'{queue = QName} = Method, Content, VHost) -> | ||||
|     case is_sharded(VHost, QName) of | ||||
|         true -> | ||||
|             precondition_failed("Can't unbind sharded queue: ~p", [QName]); | ||||
|         _    -> | ||||
|             Method | ||||
|             {Method, Content} | ||||
|     end; | ||||
| 
 | ||||
| intercept(#'queue.purge'{queue = QName} = Method, VHost) -> | ||||
| intercept(#'queue.purge'{queue = QName} = Method, Content, VHost) -> | ||||
|     case is_sharded(VHost, QName) of | ||||
|         true -> | ||||
|             precondition_failed("Can't purge sharded queue: ~p", [QName]); | ||||
|         _    -> | ||||
|             Method | ||||
|     end. | ||||
|             {Method, Content} | ||||
|     end; | ||||
| 
 | ||||
| applies_to('basic.consume') -> true; | ||||
| applies_to('basic.get') -> true; | ||||
| applies_to('queue.delete') -> true; | ||||
| applies_to('queue.declare') -> true; | ||||
| applies_to('queue.bind') -> true; | ||||
| applies_to('queue.unbind') -> true; | ||||
| applies_to('queue.purge') -> true; | ||||
| applies_to(_Other) -> false. | ||||
| intercept(Method, Content, _VHost) -> | ||||
|     {Method, Content}. | ||||
| 
 | ||||
| applies_to() -> | ||||
|     ['basic.consume', 'basic.get', 'queue.delete', 'queue.declare', | ||||
|      'queue.bind', 'queue.unbind', 'queue.purge']. | ||||
| 
 | ||||
| %%---------------------------------------------------------------------------- | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue