|  | @@ -567,7 +567,7 @@ class ResultSet(ResultBase):
 | 
	
		
			
				|  |  |                  raise TimeoutError('The operation timed out')
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def get(self, timeout=None, propagate=True, interval=0.5,
 | 
	
		
			
				|  |  | -            callback=None, no_ack=True):
 | 
	
		
			
				|  |  | +            callback=None, no_ack=True, on_message=None):
 | 
	
		
			
				|  |  |          """See :meth:`join`
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          This is here for API compatibility with :class:`AsyncResult`,
 | 
	
	
		
			
				|  | @@ -577,7 +577,7 @@ class ResultSet(ResultBase):
 | 
	
		
			
				|  |  |          """
 | 
	
		
			
				|  |  |          return (self.join_native if self.supports_native_join else self.join)(
 | 
	
		
			
				|  |  |              timeout=timeout, propagate=propagate,
 | 
	
		
			
				|  |  | -            interval=interval, callback=callback, no_ack=no_ack)
 | 
	
		
			
				|  |  | +            interval=interval, callback=callback, no_ack=no_ack, on_message=on_message)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def join(self, timeout=None, propagate=True, interval=0.5,
 | 
	
		
			
				|  |  |               callback=None, no_ack=True):
 | 
	
	
		
			
				|  | @@ -649,7 +649,8 @@ class ResultSet(ResultBase):
 | 
	
		
			
				|  |  |                  results.append(value)
 | 
	
		
			
				|  |  |          return results
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    def iter_native(self, timeout=None, interval=0.5, no_ack=True):
 | 
	
		
			
				|  |  | +    def iter_native(self, timeout=None, interval=0.5, no_ack=True,
 | 
	
		
			
				|  |  | +                    on_message=None):
 | 
	
		
			
				|  |  |          """Backend optimized version of :meth:`iterate`.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          .. versionadded:: 2.2
 | 
	
	
		
			
				|  | @@ -667,10 +668,12 @@ class ResultSet(ResultBase):
 | 
	
		
			
				|  |  |          return self.backend.get_many(
 | 
	
		
			
				|  |  |              set(r.id for r in results),
 | 
	
		
			
				|  |  |              timeout=timeout, interval=interval, no_ack=no_ack,
 | 
	
		
			
				|  |  | +            on_message=on_message,
 | 
	
		
			
				|  |  |          )
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def join_native(self, timeout=None, propagate=True,
 | 
	
		
			
				|  |  | -                    interval=0.5, callback=None, no_ack=True):
 | 
	
		
			
				|  |  | +                    interval=0.5, callback=None, no_ack=True,
 | 
	
		
			
				|  |  | +                    on_message=None):
 | 
	
		
			
				|  |  |          """Backend optimized version of :meth:`join`.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          .. versionadded:: 2.2
 | 
	
	
		
			
				|  | @@ -687,7 +690,8 @@ class ResultSet(ResultBase):
 | 
	
		
			
				|  |  |              result.id: i for i, result in enumerate(self.results)
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          acc = None if callback else [None for _ in range(len(self))]
 | 
	
		
			
				|  |  | -        for task_id, meta in self.iter_native(timeout, interval, no_ack):
 | 
	
		
			
				|  |  | +        for task_id, meta in self.iter_native(timeout, interval, no_ack,
 | 
	
		
			
				|  |  | +                                              on_message):
 | 
	
		
			
				|  |  |              value = meta['result']
 | 
	
		
			
				|  |  |              if propagate and meta['status'] in states.PROPAGATE_STATES:
 | 
	
		
			
				|  |  |                  raise value
 |