Index: Rhino.ServiceBus.Tests/Bugs/Occasional_consumer_resolving_when_not_subscribed.cs
===================================================================
--- Rhino.ServiceBus.Tests/Bugs/Occasional_consumer_resolving_when_not_subscribed.cs	(revision 0)
+++ Rhino.ServiceBus.Tests/Bugs/Occasional_consumer_resolving_when_not_subscribed.cs	(revision 0)
@@ -0,0 +1,57 @@
+using System;
+using System.Threading;
+using Castle.Windsor;
+using Castle.Windsor.Configuration.Interpreters;
+using Rhino.ServiceBus.Impl;
+using Xunit;
+
+namespace Rhino.ServiceBus.Tests.Bugs
+{
+	public class Occasional_consumer_resolving_when_not_subscribed : OccasionalConsumerOf<SimpleMessage>
+	{
+		private readonly IWindsorContainer container;
+    	public static ManualResetEvent wait;
+		public static bool GotConsumed;
+
+		public Occasional_consumer_resolving_when_not_subscribed()
+        {
+            container = new WindsorContainer(new XmlInterpreter());
+            container.Kernel.AddFacility("rhino.esb", new RhinoServiceBusFacility());
+			container.AddComponent<Occasional_consumer_resolving_when_not_subscribed>();
+			container.AddComponent<Not_consumed>();
+        }
+
+		[Fact]
+		public void Would_not_gather_occasional_consumer_if_not_instance_subscribed()
+		{
+			using (var bus = container.Resolve<IStartableServiceBus>())
+			{
+				wait = new ManualResetEvent(false);
+				bus.Start();
+				using (bus.AddInstanceSubscription(this))
+				{
+					bus.Send(new SimpleMessage());
+					wait.WaitOne(TimeSpan.FromSeconds(5));
+				}
+			}
+			Assert.False(GotConsumed);
+		}
+
+		public void Consume(SimpleMessage message)
+		{
+		}
+	}
+
+	public class SimpleMessage { }
+
+	public class Not_consumed : OccasionalConsumerOf<SimpleMessage>
+	{
+		public void Consume(SimpleMessage message)
+		{
+			Occasional_consumer_resolving_when_not_subscribed.GotConsumed = true;
+			Occasional_consumer_resolving_when_not_subscribed.wait.Set();
+		}
+	}
+
+	
+}
\ No newline at end of file
Index: Rhino.ServiceBus/Impl/DefaultServiceBus.cs
===================================================================
--- Rhino.ServiceBus/Impl/DefaultServiceBus.cs	(revision 1977)
+++ Rhino.ServiceBus/Impl/DefaultServiceBus.cs	(working copy)
@@ -401,7 +401,8 @@
                 .GetInstanceSubscriptions(msgType);
 
             Type consumerType = reflection.GetGenericTypeOf(typeof(ConsumerOf<>), msg.Message);
-            var consumers = GetAllConsumers(consumerType, sagas);
+        	Type occasionalConsumerType = reflection.GetGenericTypeOf(typeof (OccasionalConsumerOf<>), msg.Message);
+            var consumers = GetAllNonOccasionalConsumers(consumerType, occasionalConsumerType, sagas);
             for (var i = 0; i < consumers.Length; i++)
             {
                 var saga = consumers[i] as IAccessibleSaga;
@@ -440,13 +441,15 @@
 		/// Here we don't use ResolveAll from Windsor because we want to get an error
 		/// if a component exists which isn't valid
 		/// </summary>
-    	private object[] GetAllConsumers(Type consumerType, IEnumerable<object> instanceOfTypesToSkipResolving)
+    	private object[] GetAllNonOccasionalConsumers(Type consumerType, Type occasionalConsumerType, IEnumerable<object> instanceOfTypesToSkipResolving)
     	{
 			var handlers = kernel.GetAssignableHandlers(consumerType);
 			var consumers = new List<object>(handlers.Length);
 			foreach (var handler in handlers)
 			{
 			    var implementation = handler.ComponentModel.Implementation;
+				if(occasionalConsumerType.IsAssignableFrom(implementation))
+					continue;
                 if (instanceOfTypesToSkipResolving.Any(x => x.GetType() == implementation))
                     continue;
 
