├── icon.png
├── Sources
├── Binding
│ ├── ZeroMQ
│ │ ├── libzmq.dll
│ │ ├── SocketMode.cs
│ │ ├── packages.config
│ │ ├── ZMQInprocessBinding.cs
│ │ ├── ZMQTcpBinding.cs
│ │ ├── DebugHelper.cs
│ │ ├── ZMQInputChannel.cs
│ │ ├── ZMQOutputChannel.cs
│ │ ├── ZMQBinding.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── ZMQTransportBindingElement.cs
│ │ └── ZMQRequestContext.cs
│ ├── ZeroMQ.IntegrationTests
│ │ ├── libzmq.dll
│ │ ├── packages.config
│ │ ├── ServiceInterfaces
│ │ │ ├── IPublicationService.cs
│ │ │ └── IRequestReplyMessaging.cs
│ │ └── Properties
│ │ │ └── AssemblyInfo.cs
│ ├── RabbitMQ
│ │ ├── IFaultMessageProcessor.cs
│ │ ├── packages.config
│ │ ├── RabbitMQBindingSection.cs
│ │ ├── CommunicationOperation.cs
│ │ ├── CurrentVersion.cs
│ │ ├── DebugHelper.cs
│ │ ├── Clent.Extensions
│ │ │ ├── QueueingBasicConsumer.cs
│ │ │ ├── TransactionalQueueConsumer.cs
│ │ │ ├── TransactionalMessageReceiver.cs
│ │ │ ├── ConsumptionEnslistment.cs
│ │ │ ├── IMessageReceiver.cs
│ │ │ └── NoAckMessageReceiver.cs
│ │ ├── TransactionalDispatchingEnslistment.cs
│ │ ├── ReplyToBehavior.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── RabbitMQTransportChannelFactory.cs
│ │ └── RabbitMQOutputChannelBase.cs
│ ├── RabbitMQ.IntegrationTests
│ │ ├── ContractsAndServices
│ │ │ ├── IDuplexService.cs
│ │ │ ├── IOneWayService.cs
│ │ │ ├── Data.cs
│ │ │ ├── DuplexService.cs
│ │ │ └── OneWayService.cs
│ │ ├── packages.config
│ │ └── Properties
│ │ │ └── AssemblyInfo.cs
│ └── RabbitMQ.UnitTests
│ │ ├── packages.config
│ │ ├── RabbitMQBindingConfigurationElementTest.cs
│ │ └── Properties
│ │ └── AssemblyInfo.cs
├── Core.IntegrationTest
│ ├── libzmq.dll
│ ├── protoc.exe
│ ├── contract.proto
│ ├── BusPublisherTest.cs
│ ├── app.config
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── BusRoutingKeyTest.cs
│ ├── ProtobufSerializerTests.cs
│ ├── BlobTransferTest.cs
│ └── Data.cs
├── Core
│ ├── packages.config
│ ├── API
│ │ ├── ICallHandler.cs
│ │ ├── IMessageFilter.cs
│ │ ├── IKnownContractCollector.cs
│ │ ├── IDispatcher.cs
│ │ └── MessageFilterInfo.cs
│ ├── NullCallHandler.cs
│ ├── NullMessageFilter.cs
│ ├── NullPublishingErrorHandler.cs
│ ├── RawHandler.cs
│ ├── ActionHandler.cs
│ ├── NullErrorSubscriber.cs
│ ├── TypeSubscription.cs
│ ├── MessagingConstants.cs
│ ├── MessagingConstancts.cs
│ ├── BusMessageHandler.cs
│ ├── FaultMessageProcessor.cs
│ ├── KnownContractCollector.cs
│ ├── MessageSubscribtionInfo.cs
│ ├── PublisherConfigurator.cs
│ ├── SubscriptionBase.cs
│ ├── DataContractKey.cs
│ ├── RabbitMQMessageFilter.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── MessagePumpSubscriptionBase.cs
│ ├── RabbitMQBusConfigSectionHandler.cs
│ ├── Subscriber.cs
│ └── SubscriberConfigurator.cs
├── Core.Protobuf
│ ├── packages.config
│ ├── ConfiguratorExtensions.cs
│ ├── ProtobufSerializer.cs
│ └── Properties
│ │ └── AssemblyInfo.cs
├── Core.SignalR.IntegrationTests
│ ├── packages.config
│ ├── app.config
│ ├── SignalRBackplaneTest.cs
│ └── Properties
│ │ └── AssemblyInfo.cs
├── Core2
│ ├── IMessageConsumer.cs
│ ├── SubscriptionInfo.cs
│ ├── ICallHandler.cs
│ ├── IMessageRegistry.cs
│ ├── NullPublishingErrorHandler.cs
│ ├── NullBlockWatcher.cs
│ ├── MessageMonitor.cs
│ ├── NullCallHandler.cs
│ ├── NullExceptionFilter.cs
│ ├── NullTrace.cs
│ ├── Subscription.cs
│ ├── app.config
│ ├── IRpcConsumer.cs
│ ├── IMessageHelper.cs
│ ├── ISubscriptionHelper.cs
│ ├── Core2.csproj
│ ├── ConfirmPublisher.cs
│ ├── TransactionalPublisher.cs
│ ├── NullErrorSubscriber.cs
│ ├── SyncTaskScheduler.cs
│ ├── MessageFilterInfo.cs
│ ├── MessagingConstants.cs
│ ├── ISendHelper.cs
│ ├── AsyncRawHandler.cs
│ ├── JsonSerializer.cs
│ ├── AsyncActionHandler.cs
│ ├── AsyncFunctionHandler.cs
│ ├── RpcPublisherConfigurator.cs
│ ├── SubscriberBase.cs
│ └── AsyncBusMessageCallHandler.cs
├── Core.STandard
│ ├── IMessageConsumer.cs
│ ├── API
│ │ ├── RejectMessageException.cs
│ │ ├── SubscribtionAttribute.cs
│ │ ├── BusHeaderBase.cs
│ │ ├── ISerializer.cs
│ │ ├── SubscribtionClosedException.cs
│ │ ├── NoIncomingConnectionAcceptedException.cs
│ │ ├── IExceptionFilter.cs
│ │ ├── ITransactionalPublisher.cs
│ │ ├── SubscriptionClosedException.cs
│ │ ├── IConfirmPublisher.cs
│ │ ├── MessageSubscribtionAttribute.cs
│ │ ├── IPublishingErrorHandler.cs
│ │ ├── ISubscription.cs
│ │ ├── IBlockWatcher.cs
│ │ ├── HeaderFilterAttribute.cs
│ │ ├── ITrace.cs
│ │ ├── RpcCallException.cs
│ │ ├── IRpcPublisherConfigurator.cs
│ │ ├── IErrorSubscriber.cs
│ │ ├── IReceiver.cs
│ │ └── DataContractKey.cs
│ ├── SubscriptionInfo.cs
│ ├── ICallHandler.cs
│ ├── IMessageRegistry.cs
│ ├── NullPublishingErrorHandler.cs
│ ├── NullBlockWatcher.cs
│ ├── MessageMonitor.cs
│ ├── NullCallHandler.cs
│ ├── NullExceptionFilter.cs
│ ├── NullTrace.cs
│ ├── Subscription.cs
│ ├── IRpcConsumer.cs
│ ├── IMessageHelper.cs
│ ├── ISubscriptionHelper.cs
│ ├── ConfirmPublisher.cs
│ ├── TransactionalPublisher.cs
│ ├── NullErrorSubscriber.cs
│ ├── Core.Standard.csproj
│ ├── SyncTaskScheduler.cs
│ ├── MessageFilterInfo.cs
│ ├── MessagingConstants.cs
│ ├── ISendHelper.cs
│ ├── AsyncRawHandler.cs
│ ├── JsonSerializer.cs
│ ├── AsyncActionHandler.cs
│ ├── AsyncFunctionHandler.cs
│ ├── RpcPublisherConfigurator.cs
│ ├── SubscriberBase.cs
│ └── AsyncBusMessageCallHandler.cs
├── Core.API
│ ├── RejectMessageException.cs
│ ├── SubscribtionAttribute.cs
│ ├── BusHeaderBase.cs
│ ├── ISerializer.cs
│ ├── SubscribtionClosedException.cs
│ ├── NoIncomingConnectionAcceptedException.cs
│ ├── IExceptionFilter.cs
│ ├── Core.API.csproj
│ ├── ITransactionalPublisher.cs
│ ├── SubscriptionClosedException.cs
│ ├── IConfirmPublisher.cs
│ ├── MessageSubscribtionAttribute.cs
│ ├── IPublishingErrorHandler.cs
│ ├── ISubscription.cs
│ ├── IBlockWatcher.cs
│ ├── HeaderFilterAttribute.cs
│ ├── ITrace.cs
│ ├── RpcCallException.cs
│ ├── IRpcPublisherConfigurator.cs
│ ├── IErrorSubscriber.cs
│ ├── IReceiver.cs
│ └── DataContractKey.cs
├── .nuget
│ └── NuGet.Config
├── Core.UnitTests
│ ├── packages.config
│ ├── RabbitMQBusConfigurationTests.cs
│ ├── App.config
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ └── RabbitMQConnectionStringTest.cs
├── Core.Proxy
│ ├── IHeadersProvider.cs
│ ├── ISubscriptionFactory.cs
│ ├── IChannelFactory.cs
│ ├── IMessageFactory.cs
│ ├── app.config
│ ├── DefaultHeadersProvider.cs
│ ├── SubscriptionFactory.cs
│ ├── packages.config
│ ├── ISubscriptionSelector.cs
│ ├── ChannelFactory.cs
│ ├── PublishInterceptor.cs
│ ├── ContractHelper.cs
│ └── Properties
│ │ └── AssemblyInfo.cs
├── Core.SignalR
│ ├── RabbitScaleoutConfiguration.cs
│ ├── app.config
│ ├── ScaleoutMessageSerializer.cs
│ ├── packages.config
│ ├── DependencyResolverExtensions.cs
│ └── Properties
│ │ └── AssemblyInfo.cs
├── MessageBus.vsmdi
├── Core.Proxy.IntegrationTests
│ ├── packages.config
│ ├── app.config
│ └── Properties
│ │ └── AssemblyInfo.cs
├── Local.testsettings
└── Core.ZeroMQ
│ └── Properties
│ └── AssemblyInfo.cs
├── .travis.yml
├── MessageBus.Binding.RabbitMQ.nuspec
├── MessageBus.Proxy.nuspec
├── MessageBus.SignalR.nuspec
├── MessageBus.Protobuf.nuspec
├── MessageBus.nuspec
└── Docs
└── ConnectionString.md
/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/parshim/MessageBus/HEAD/icon.png
--------------------------------------------------------------------------------
/Sources/Binding/ZeroMQ/libzmq.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/parshim/MessageBus/HEAD/Sources/Binding/ZeroMQ/libzmq.dll
--------------------------------------------------------------------------------
/Sources/Core.IntegrationTest/libzmq.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/parshim/MessageBus/HEAD/Sources/Core.IntegrationTest/libzmq.dll
--------------------------------------------------------------------------------
/Sources/Core.IntegrationTest/protoc.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/parshim/MessageBus/HEAD/Sources/Core.IntegrationTest/protoc.exe
--------------------------------------------------------------------------------
/Sources/Binding/ZeroMQ.IntegrationTests/libzmq.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/parshim/MessageBus/HEAD/Sources/Binding/ZeroMQ.IntegrationTests/libzmq.dll
--------------------------------------------------------------------------------
/Sources/Binding/ZeroMQ/SocketMode.cs:
--------------------------------------------------------------------------------
1 | namespace MessageBus.Binding.ZeroMQ
2 | {
3 | public enum SocketMode
4 | {
5 | PubSub,
6 | PushPull
7 | }
8 | }
--------------------------------------------------------------------------------
/Sources/Core/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Sources/Binding/ZeroMQ/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Sources/Core/API/ICallHandler.cs:
--------------------------------------------------------------------------------
1 | namespace MessageBus.Core.API
2 | {
3 | public interface ICallHandler
4 | {
5 | void Dispatch(RawBusMessage message);
6 | }
7 | }
--------------------------------------------------------------------------------
/Sources/Core.Protobuf/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Sources/Core.SignalR.IntegrationTests/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Sources/Core2/IMessageConsumer.cs:
--------------------------------------------------------------------------------
1 | using RabbitMQ.Client;
2 |
3 | namespace MessageBus.Core
4 | {
5 | public interface IMessageConsumer : IBasicConsumer, IMessageRegistry
6 | {
7 |
8 | }
9 | }
--------------------------------------------------------------------------------
/Sources/Core.STandard/IMessageConsumer.cs:
--------------------------------------------------------------------------------
1 | using RabbitMQ.Client;
2 |
3 | namespace MessageBus.Core
4 | {
5 | public interface IMessageConsumer : IBasicConsumer, IMessageRegistry
6 | {
7 |
8 | }
9 | }
--------------------------------------------------------------------------------
/Sources/Core.API/RejectMessageException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace MessageBus.Core.API
4 | {
5 | public class RejectMessageException : Exception
6 | {
7 | public object ReplyData { get; set; }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Sources/.nuget/NuGet.Config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Sources/Core2/SubscriptionInfo.cs:
--------------------------------------------------------------------------------
1 | namespace MessageBus.Core
2 | {
3 | public class SubscriptionInfo
4 | {
5 | public ICallHandler Handler { get; set; }
6 |
7 | public MessageFilterInfo FilterInfo { get; set; }
8 | }
9 | }
--------------------------------------------------------------------------------
/Sources/Core.STandard/API/RejectMessageException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace MessageBus.Core.API
4 | {
5 | public class RejectMessageException : Exception
6 | {
7 | public object ReplyData { get; set; }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Sources/Core.STandard/SubscriptionInfo.cs:
--------------------------------------------------------------------------------
1 | namespace MessageBus.Core
2 | {
3 | public class SubscriptionInfo
4 | {
5 | public ICallHandler Handler { get; set; }
6 |
7 | public MessageFilterInfo FilterInfo { get; set; }
8 | }
9 | }
--------------------------------------------------------------------------------
/Sources/Core.UnitTests/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Sources/Core/API/IMessageFilter.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace MessageBus.Core.API
4 | {
5 | internal interface IMessageFilter
6 | {
7 | void ApplyFilters(IEnumerable filters);
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Sources/Binding/RabbitMQ/IFaultMessageProcessor.cs:
--------------------------------------------------------------------------------
1 | using System.ServiceModel.Channels;
2 |
3 | namespace MessageBus.Binding.RabbitMQ
4 | {
5 | public interface IFaultMessageProcessor
6 | {
7 | void Process(int code, string text, Message message);
8 | }
9 | }
--------------------------------------------------------------------------------
/Sources/Core2/ICallHandler.cs:
--------------------------------------------------------------------------------
1 | using System.Threading.Tasks;
2 | using MessageBus.Core.API;
3 |
4 | namespace MessageBus.Core
5 | {
6 | public interface ICallHandler
7 | {
8 | Task Dispatch(RawBusMessage message);
9 | }
10 |
11 | }
--------------------------------------------------------------------------------
/Sources/Core.Proxy/IHeadersProvider.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using MessageBus.Core.API;
3 |
4 | namespace MessageBus.Core.Proxy
5 | {
6 | public interface IHeadersProvider
7 | {
8 | IEnumerable GetMessageHeaders();
9 | }
10 | }
--------------------------------------------------------------------------------
/Sources/Core.STandard/ICallHandler.cs:
--------------------------------------------------------------------------------
1 | using System.Threading.Tasks;
2 | using MessageBus.Core.API;
3 |
4 | namespace MessageBus.Core
5 | {
6 | public interface ICallHandler
7 | {
8 | Task Dispatch(RawBusMessage message);
9 | }
10 |
11 | }
--------------------------------------------------------------------------------
/Sources/Core.API/SubscribtionAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace MessageBus.Core.API
4 | {
5 | [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
6 | public class SubscribtionAttribute : Attribute
7 | {
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Sources/Core2/IMessageRegistry.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using MessageBus.Core.API;
3 |
4 | namespace MessageBus.Core
5 | {
6 | public interface IMessageRegistry
7 | {
8 | bool Register(Type type, MessageFilterInfo filterInfo, ICallHandler handler);
9 | }
10 | }
--------------------------------------------------------------------------------
/Sources/Core/NullCallHandler.cs:
--------------------------------------------------------------------------------
1 | using MessageBus.Core.API;
2 |
3 | namespace MessageBus.Core
4 | {
5 | internal class NullCallHandler : ICallHandler
6 | {
7 | public void Dispatch(RawBusMessage message)
8 | {
9 |
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/Sources/Core.STandard/API/SubscribtionAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace MessageBus.Core.API
4 | {
5 | [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
6 | public class SubscribtionAttribute : Attribute
7 | {
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Sources/Core.STandard/IMessageRegistry.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using MessageBus.Core.API;
3 |
4 | namespace MessageBus.Core
5 | {
6 | public interface IMessageRegistry
7 | {
8 | bool Register(Type type, MessageFilterInfo filterInfo, ICallHandler handler);
9 | }
10 | }
--------------------------------------------------------------------------------
/Sources/Binding/RabbitMQ/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Sources/Core.API/BusHeaderBase.cs:
--------------------------------------------------------------------------------
1 | namespace MessageBus.Core.API
2 | {
3 | public abstract class BusHeaderBase
4 | {
5 | ///
6 | /// Header name
7 | ///
8 | public string Name { get; set; }
9 |
10 | public abstract object GetValue();
11 | }
12 | }
--------------------------------------------------------------------------------
/Sources/Core.API/ISerializer.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace MessageBus.Core.API
4 | {
5 | public interface ISerializer
6 | {
7 | string ContentType { get; }
8 |
9 | byte[] Serialize(RawBusMessage data);
10 |
11 | object Deserialize(Type dataType, byte[] body);
12 | }
13 | }
--------------------------------------------------------------------------------
/Sources/Core.Proxy/ISubscriptionFactory.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using MessageBus.Core.API;
3 |
4 | namespace MessageBus.Core.Proxy
5 | {
6 | public interface ISubscriptionFactory where T : class
7 | {
8 | ISubscriptionSelector Subscribe(Action configurator = null);
9 | }
10 | }
--------------------------------------------------------------------------------
/Sources/Core.STandard/API/BusHeaderBase.cs:
--------------------------------------------------------------------------------
1 | namespace MessageBus.Core.API
2 | {
3 | public abstract class BusHeaderBase
4 | {
5 | ///
6 | /// Header name
7 | ///
8 | public string Name { get; set; }
9 |
10 | public abstract object GetValue();
11 | }
12 | }
--------------------------------------------------------------------------------
/Sources/Core.STandard/API/ISerializer.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace MessageBus.Core.API
4 | {
5 | public interface ISerializer
6 | {
7 | string ContentType { get; }
8 |
9 | byte[] Serialize(RawBusMessage data);
10 |
11 | object Deserialize(Type dataType, byte[] body);
12 | }
13 | }
--------------------------------------------------------------------------------
/Sources/Binding/ZeroMQ.IntegrationTests/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Sources/Core/API/IKnownContractCollector.cs:
--------------------------------------------------------------------------------
1 | using System.Xml;
2 |
3 | namespace MessageBus.Core.API
4 | {
5 | internal interface IKnownContractCollector
6 | {
7 | void AddKnownContract(DataContract contract);
8 | void Deserialize(RawBusMessage rawBusMessage, XmlDictionaryReader bodyContent);
9 | }
10 | }
--------------------------------------------------------------------------------
/Sources/Core/NullMessageFilter.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using MessageBus.Core.API;
3 |
4 | namespace MessageBus.Core
5 | {
6 | internal class NullMessageFilter : IMessageFilter
7 | {
8 | public void ApplyFilters(IEnumerable filters)
9 | {
10 |
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/Sources/Core/NullPublishingErrorHandler.cs:
--------------------------------------------------------------------------------
1 | using MessageBus.Core.API;
2 |
3 | namespace MessageBus.Core
4 | {
5 | internal class NullPublishingErrorHandler : IPublishingErrorHandler
6 | {
7 | public void DeliveryFailed(int errorCode, string text, RawBusMessage message)
8 | {
9 |
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/Sources/Core2/NullPublishingErrorHandler.cs:
--------------------------------------------------------------------------------
1 | using MessageBus.Core.API;
2 |
3 | namespace MessageBus.Core
4 | {
5 | internal class NullPublishingErrorHandler : IPublishingErrorHandler
6 | {
7 | public void DeliveryFailed(int errorCode, string text, RawBusMessage message)
8 | {
9 |
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/Sources/Core.STandard/NullPublishingErrorHandler.cs:
--------------------------------------------------------------------------------
1 | using MessageBus.Core.API;
2 |
3 | namespace MessageBus.Core
4 | {
5 | internal class NullPublishingErrorHandler : IPublishingErrorHandler
6 | {
7 | public void DeliveryFailed(int errorCode, string text, RawBusMessage message)
8 | {
9 |
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/Sources/Core.Proxy/IChannelFactory.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using MessageBus.Core.API;
3 |
4 | namespace MessageBus.Core.Proxy
5 | {
6 | public interface IChannelFactory : IDisposable where T : class
7 | {
8 | T CreateChannel(params BusHeader[] headers);
9 |
10 | T CreateChannel(IHeadersProvider headersProvider);
11 | }
12 | }
--------------------------------------------------------------------------------
/Sources/Core2/NullBlockWatcher.cs:
--------------------------------------------------------------------------------
1 | using MessageBus.Core.API;
2 |
3 | namespace MessageBus.Core
4 | {
5 | public class NullBlockWatcher : IBlockWatcher
6 | {
7 | public void ConnectionBlocked(string reason)
8 | {
9 |
10 | }
11 |
12 | public void ConnectionUnblocked()
13 | {
14 |
15 | }
16 | }
17 | }
--------------------------------------------------------------------------------
/Sources/Core.API/SubscribtionClosedException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace MessageBus.Core.API
4 | {
5 | public class SubscribtionClosedException : Exception
6 | {
7 | public SubscribtionClosedException()
8 | : base("Unable to subscribe to message types after subscriber start to process messages")
9 | {
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/Sources/Core2/MessageMonitor.cs:
--------------------------------------------------------------------------------
1 | using RabbitMQ.Client;
2 |
3 | namespace MessageBus.Core
4 | {
5 | public class MessageMonitor : SubscriberBase
6 | {
7 | public MessageMonitor(IModel model, string queue, IBasicConsumer consumer, SubscriberConfigurator configurator) : base(model, queue, consumer, configurator)
8 | {
9 | }
10 | }
11 |
12 | }
--------------------------------------------------------------------------------
/Sources/Core2/NullCallHandler.cs:
--------------------------------------------------------------------------------
1 | using System.Threading.Tasks;
2 | using MessageBus.Core.API;
3 |
4 | namespace MessageBus.Core
5 | {
6 | internal class NullCallHandler : ICallHandler
7 | {
8 | public Task Dispatch(RawBusMessage message)
9 | {
10 | return Task.FromResult(new RawBusMessage());
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/Sources/Core.API/NoIncomingConnectionAcceptedException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace MessageBus.Core.API
4 | {
5 | public class NoIncomingConnectionAcceptedException : Exception
6 | {
7 | public NoIncomingConnectionAcceptedException() : base("Unable to open subscriber cause any input connection was accepted")
8 | {
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Sources/Core.STandard/NullBlockWatcher.cs:
--------------------------------------------------------------------------------
1 | using MessageBus.Core.API;
2 |
3 | namespace MessageBus.Core
4 | {
5 | public class NullBlockWatcher : IBlockWatcher
6 | {
7 | public void ConnectionBlocked(string reason)
8 | {
9 |
10 | }
11 |
12 | public void ConnectionUnblocked()
13 | {
14 |
15 | }
16 | }
17 | }
--------------------------------------------------------------------------------
/Sources/Core2/NullExceptionFilter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using MessageBus.Core.API;
3 |
4 | namespace MessageBus.Core
5 | {
6 | internal class NullExceptionFilter : IExceptionFilter
7 | {
8 | public bool Filter(Exception exception, RawBusMessage message, bool redelivered, ulong deliveryTag)
9 | {
10 | return true;
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/Sources/Core.STandard/API/SubscribtionClosedException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace MessageBus.Core.API
4 | {
5 | public class SubscribtionClosedException : Exception
6 | {
7 | public SubscribtionClosedException()
8 | : base("Unable to subscribe to message types after subscriber start to process messages")
9 | {
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/Sources/Core.STandard/MessageMonitor.cs:
--------------------------------------------------------------------------------
1 | using RabbitMQ.Client;
2 |
3 | namespace MessageBus.Core
4 | {
5 | public class MessageMonitor : SubscriberBase
6 | {
7 | public MessageMonitor(IModel model, string queue, IBasicConsumer consumer, SubscriberConfigurator configurator) : base(model, queue, consumer, configurator)
8 | {
9 | }
10 | }
11 |
12 | }
--------------------------------------------------------------------------------
/Sources/Core.STandard/NullCallHandler.cs:
--------------------------------------------------------------------------------
1 | using System.Threading.Tasks;
2 | using MessageBus.Core.API;
3 |
4 | namespace MessageBus.Core
5 | {
6 | internal class NullCallHandler : ICallHandler
7 | {
8 | public Task Dispatch(RawBusMessage message)
9 | {
10 | return Task.FromResult(new RawBusMessage());
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/Sources/Core.STandard/API/NoIncomingConnectionAcceptedException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace MessageBus.Core.API
4 | {
5 | public class NoIncomingConnectionAcceptedException : Exception
6 | {
7 | public NoIncomingConnectionAcceptedException() : base("Unable to open subscriber cause any input connection was accepted")
8 | {
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Sources/Core.STandard/NullExceptionFilter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using MessageBus.Core.API;
3 |
4 | namespace MessageBus.Core
5 | {
6 | internal class NullExceptionFilter : IExceptionFilter
7 | {
8 | public bool Filter(Exception exception, RawBusMessage message, bool redelivered, ulong deliveryTag)
9 | {
10 | return true;
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/Sources/Binding/RabbitMQ.IntegrationTests/ContractsAndServices/IDuplexService.cs:
--------------------------------------------------------------------------------
1 | using System.ServiceModel;
2 |
3 | namespace RabbitMQ.IntegrationTests.ContractsAndServices
4 | {
5 | [ServiceContract(CallbackContract = typeof(IDuplexService))]
6 | public interface IDuplexService
7 | {
8 | [OperationContract(IsOneWay = true)]
9 | void Say(Data data);
10 | }
11 | }
--------------------------------------------------------------------------------
/Sources/Core.API/IExceptionFilter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace MessageBus.Core.API
4 | {
5 | ///
6 | /// Defines which exception should reject messages and which should requeue
7 | ///
8 | public interface IExceptionFilter
9 | {
10 | bool Filter(Exception exception, RawBusMessage message, bool redelivered, ulong deliveryTag);
11 | }
12 | }
--------------------------------------------------------------------------------
/Sources/Core2/NullTrace.cs:
--------------------------------------------------------------------------------
1 | using MessageBus.Core.API;
2 |
3 | namespace MessageBus.Core
4 | {
5 | public class NullTrace : ITrace
6 | {
7 | public void MessageArrived(string busId, RawBusMessage busMessage, string consumerTag)
8 | {
9 | }
10 |
11 | public void MessageSent(string busId, RawBusMessage busMessage)
12 | {
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/Sources/Core.STandard/API/IExceptionFilter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace MessageBus.Core.API
4 | {
5 | ///
6 | /// Defines which exception should reject messages and which should requeue
7 | ///
8 | public interface IExceptionFilter
9 | {
10 | bool Filter(Exception exception, RawBusMessage message, bool redelivered, ulong deliveryTag);
11 | }
12 | }
--------------------------------------------------------------------------------
/Sources/Core.STandard/NullTrace.cs:
--------------------------------------------------------------------------------
1 | using MessageBus.Core.API;
2 |
3 | namespace MessageBus.Core
4 | {
5 | public class NullTrace : ITrace
6 | {
7 | public void MessageArrived(string busId, RawBusMessage busMessage, string consumerTag)
8 | {
9 | }
10 |
11 | public void MessageSent(string busId, RawBusMessage busMessage)
12 | {
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/Sources/Core.API/Core.API.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 | ..\..\Binaries\
6 | MessageBus.Core.API
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/Sources/Core.API/ITransactionalPublisher.cs:
--------------------------------------------------------------------------------
1 | namespace MessageBus.Core.API
2 | {
3 | public interface ITransactionalPublisher : IPublisher
4 | {
5 |
6 | ///
7 | /// Commits message delivery
8 | ///
9 | void Commit();
10 |
11 | ///
12 | /// Rallback message delivery
13 | ///
14 | void Rollback();
15 | }
16 | }
--------------------------------------------------------------------------------
/Sources/Core.Proxy/IMessageFactory.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Reflection;
3 |
4 | namespace MessageBus.Core.Proxy
5 | {
6 | public interface IMessageFactory
7 | {
8 | object CreateMessage(MethodInfo methodInfo, object[] values);
9 |
10 | Type GetMessageType(MethodInfo methodInfo);
11 |
12 | FieldInfo GetMessageFieldInfo(MethodInfo methodInfo, string fieldName);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Sources/Binding/RabbitMQ/RabbitMQBindingSection.cs:
--------------------------------------------------------------------------------
1 | using System.ServiceModel.Configuration;
2 |
3 | namespace MessageBus.Binding.RabbitMQ
4 | {
5 | ///
6 | /// Allows the RabbitMQBinding to be declarativley configured
7 | ///
8 | public sealed class RabbitMQBindingSection : StandardBindingCollectionElement
9 | {
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Sources/Core.SignalR/RabbitScaleoutConfiguration.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using MessageBus.Core.API;
3 | using Microsoft.AspNet.SignalR.Messaging;
4 |
5 | namespace Core.SignalR
6 | {
7 | public class RabbitScaleoutConfiguration : ScaleoutConfiguration
8 | {
9 | public string ConnectionString { get; set; }
10 |
11 | public List FilterHeaders { get; set; }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Sources/Core.API/SubscriptionClosedException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace MessageBus.Core.API
4 | {
5 | ///
6 | ///
7 | ///
8 | public class SubscriptionClosedException : Exception
9 | {
10 | public SubscriptionClosedException()
11 | : base("Unable to subscribe to message types after subscriber start to process messages")
12 | {
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/Sources/Core.STandard/API/ITransactionalPublisher.cs:
--------------------------------------------------------------------------------
1 | namespace MessageBus.Core.API
2 | {
3 | public interface ITransactionalPublisher : IPublisher
4 | {
5 |
6 | ///
7 | /// Commits message delivery
8 | ///
9 | void Commit();
10 |
11 | ///
12 | /// Rallback message delivery
13 | ///
14 | void Rollback();
15 | }
16 | }
--------------------------------------------------------------------------------
/Sources/Core.API/IConfirmPublisher.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace MessageBus.Core.API
4 | {
5 | public interface IConfirmPublisher : IPublisher
6 | {
7 | ///
8 | /// Waits for confirms of all messages published till method call
9 | ///
10 | ///
11 | ///
12 | bool WaitForConfirms(TimeSpan timeOut);
13 | }
14 | }
--------------------------------------------------------------------------------
/Sources/Core.STandard/API/SubscriptionClosedException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace MessageBus.Core.API
4 | {
5 | ///
6 | ///
7 | ///
8 | public class SubscriptionClosedException : Exception
9 | {
10 | public SubscriptionClosedException()
11 | : base("Unable to subscribe to message types after subscriber start to process messages")
12 | {
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/Sources/Binding/ZeroMQ/ZMQInprocessBinding.cs:
--------------------------------------------------------------------------------
1 | using ZMQ;
2 |
3 | namespace MessageBus.Binding.ZeroMQ
4 | {
5 | public sealed class ZMQInprocessBinding : ZMQBinding
6 | {
7 | public ZMQInprocessBinding()
8 | : base("ZMQInprocessBinding", SocketMode.PubSub)
9 | {
10 | }
11 |
12 | public override string Scheme
13 | {
14 | get { return "inproc"; }
15 | }
16 |
17 | }
18 | }
--------------------------------------------------------------------------------
/Sources/Core.STandard/API/IConfirmPublisher.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace MessageBus.Core.API
4 | {
5 | public interface IConfirmPublisher : IPublisher
6 | {
7 | ///
8 | /// Waits for confirms of all messages published till method call
9 | ///
10 | ///
11 | ///
12 | bool WaitForConfirms(TimeSpan timeOut);
13 | }
14 | }
--------------------------------------------------------------------------------
/Sources/Binding/RabbitMQ.UnitTests/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Sources/Core2/Subscription.cs:
--------------------------------------------------------------------------------
1 | using RabbitMQ.Client;
2 |
3 | namespace MessageBus.Core
4 | {
5 | public class Subscription : SubscriberBase
6 | {
7 | public Subscription(IModel model, string queue, IMessageConsumer consumer, object instance, SubscriberConfigurator configurator, ISubscriptionHelper helper)
8 | : base(model, queue, consumer, configurator)
9 | {
10 | helper.RegisterSubscription(instance);
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/Sources/Core.API/MessageSubscribtionAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace MessageBus.Core.API
4 | {
5 | [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
6 | public class MessageSubscriptionAttribute : Attribute
7 | {
8 | ///
9 | /// Looking for derived types and automatically register them for the same callback
10 | ///
11 | public bool RegisterHierarchy { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/Sources/Core.STandard/Subscription.cs:
--------------------------------------------------------------------------------
1 | using RabbitMQ.Client;
2 |
3 | namespace MessageBus.Core
4 | {
5 | public class Subscription : SubscriberBase
6 | {
7 | public Subscription(IModel model, string queue, IMessageConsumer consumer, object instance, SubscriberConfigurator configurator, ISubscriptionHelper helper)
8 | : base(model, queue, consumer, configurator)
9 | {
10 | helper.RegisterSubscription(instance);
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/Sources/Core.STandard/API/MessageSubscribtionAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace MessageBus.Core.API
4 | {
5 | [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
6 | public class MessageSubscriptionAttribute : Attribute
7 | {
8 | ///
9 | /// Looking for derived types and automatically register them for the same callback
10 | ///
11 | public bool RegisterHierarchy { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/Sources/Core2/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Sources/Core.Proxy/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Sources/Core/RawHandler.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using MessageBus.Core.API;
3 |
4 | namespace MessageBus.Core
5 | {
6 | public class RawHandler : ICallHandler
7 | {
8 | private readonly Action _action;
9 |
10 | public RawHandler(Action action)
11 | {
12 | _action = action;
13 | }
14 |
15 | public void Dispatch(RawBusMessage message)
16 | {
17 | _action(message);
18 | }
19 | }
20 | }
--------------------------------------------------------------------------------
/Sources/Core.API/IPublishingErrorHandler.cs:
--------------------------------------------------------------------------------
1 | namespace MessageBus.Core.API
2 | {
3 | ///
4 | ///
5 | ///
6 | public interface IPublishingErrorHandler
7 | {
8 | ///
9 | ///
10 | ///
11 | ///
12 | ///
13 | ///
14 | void DeliveryFailed(int errorCode, string text, RawBusMessage message);
15 | }
16 | }
--------------------------------------------------------------------------------
/Sources/Core/ActionHandler.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using MessageBus.Core.API;
3 |
4 | namespace MessageBus.Core
5 | {
6 | public class ActionHandler : ICallHandler
7 | {
8 | private readonly Action