protected override void Given() { Config = Substitute.For <IMessagingConfig>(); Monitor = Substitute.For <IMessageMonitor>(); Logging.ToConsole(); }
protected override Task Given() { Config = Substitute.For <IMessagingConfig>(); Monitor = Substitute.For <IMessageMonitor>(); LoggerFactory = Substitute.For <ILoggerFactory>(); return(Task.CompletedTask); }
/// <summary> /// Creates a new instance of <see cref="IMessagingBus"/>. /// </summary> /// <returns> /// The created instance of <see cref="IMessagingBus"/> /// </returns> public IMessagingBus BuildSubscribers() { IMessagingConfig config = CreateConfig(); config.Validate(); ILoggerFactory loggerFactory = ServicesBuilder?.LoggerFactory?.Invoke() ?? ServiceResolver.ResolveService <ILoggerFactory>(); JustSayingBus bus = CreateBus(config, loggerFactory); JustSayingFluently fluent = CreateFluent(bus, loggerFactory); if (ServicesBuilder?.NamingStrategy != null) { fluent.WithNamingStrategy(ServicesBuilder.NamingStrategy); } if (ServicesBuilder?.MessageContextAccessor != null) { fluent.WithMessageContextAccessor(ServicesBuilder.MessageContextAccessor()); } if (SubscriptionBuilder != null) { SubscriptionBuilder.Configure(fluent); } return(bus); }
private JustSayingBus CreateBus(IMessagingConfig config, ILoggerFactory loggerFactory) { IMessageSerializationRegister register = ServicesBuilder?.SerializationRegister?.Invoke() ?? ServiceResolver.ResolveService <IMessageSerializationRegister>(); return(new JustSayingBus(config, register, loggerFactory)); }
private JustSayingBus CreateBus(IMessagingConfig config, ILoggerFactory loggerFactory) { IMessageSerializationRegister register = ServiceResolver.ResolveService <IMessageSerializationRegister>(); IMessageMonitor monitor = ServiceResolver.ResolveOptionalService <IMessageMonitor>() ?? new NullOpMessageMonitor(); var bus = new JustSayingBus(config, register, loggerFactory, monitor); return(bus); }
private JustSayingBus CreateBus(IMessagingConfig config, ILoggerFactory loggerFactory) { IMessageSerializationRegister register = ServicesBuilder?.SerializationRegister?.Invoke() ?? ServiceResolver.ResolveService <IMessageSerializationRegister>(); var bus = new JustSayingBus(config, register, loggerFactory); bus.Monitor = CreateMessageMonitor(); bus.MessageContextAccessor = CreateMessageContextAccessor(); return(bus); }
public JustSayingBus(IMessagingConfig config, IMessageSerialisationRegister serialisationRegister, ILoggerFactory loggerFactory) { _log = loggerFactory.CreateLogger("JustSaying"); Config = config; Monitor = new NullOpMessageMonitor(); _subscribersByRegionAndQueue = new Dictionary <string, Dictionary <string, INotificationSubscriber> >(); _publishersByRegionAndTopic = new Dictionary <string, Dictionary <string, IMessagePublisher> >(); SerialisationRegister = serialisationRegister; _publishers = new HashSet <IPublisher>(); _subscribers = new HashSet <ISubscriber>(); }
/// <summary> /// Creates a new instance of <see cref="IMessagingBus"/>. /// </summary> /// <returns> /// The created instance of <see cref="IMessagingBus"/> /// </returns> public IMessagingBus BuildSubscribers() { IMessagingConfig config = MessagingConfig.Build(); config.Validate(); ILoggerFactory loggerFactory = ServiceResolver.ResolveService <ILoggerFactory>(); JustSayingBus bus = CreateBus(config, loggerFactory); IAwsClientFactoryProxy proxy = CreateFactoryProxy(); IVerifyAmazonQueues creator = new AmazonQueueCreator(proxy, loggerFactory); SubscriptionBuilder.Configure(bus, ServiceResolver, creator, proxy, loggerFactory); return(bus); }
private static readonly Logger Log = LogManager.GetLogger("JustSaying"); //ToDo: danger! public JustSayingBus(IMessagingConfig config, IMessageSerialisationRegister serialisationRegister) { if (config.PublishFailureReAttempts == 0) { Log.Warn("You have not set a re-attempt value for publish failures. If the publish location is 'down' you may loose messages!"); } Log.Info(string.Format("Registering with stack.")); Config = config; Monitor = new NullOpMessageMonitor(); _notificationSubscribers = new Dictionary <string, INotificationSubscriber>(); _messagePublishers = new Dictionary <string, Dictionary <Type, IMessagePublisher> >(); SerialisationRegister = serialisationRegister; }
/// <summary> /// Gets the next informed queue's message. /// Once the message is dequeued, it is deleted from the queue. /// Depending on the service, this method may take a few seconds to return, waiting for new messages before completion. /// If no message is found, returns null. /// </summary> /// <param name="config">The queue configuration.</param> /// <exception cref="InvalidOperationException">Occurs when the connection to the server fails.</exception> public static string Dequeue(string queueName, IMessagingConfig config) { queueName = queueName.ToLower(); Utils.ValidateQueueName(queueName, true); string message = null; using (var client = new Messaging(config)) { var transporter = client.GetTransporter(queueName); transporter.DequeueSingleMessage(queueName, (msg) => { message = msg; return(true); }); } return(message); }
/// <summary> /// Creates a new instance of <see cref="IMessagePublisher"/>. /// </summary> /// <returns> /// The created instance of <see cref="IMessagePublisher"/> /// </returns> public IMessagePublisher BuildPublisher() { IMessagingConfig config = MessagingConfig.Build(); config.Validate(); ILoggerFactory loggerFactory = ServiceResolver.ResolveService <ILoggerFactory>(); JustSayingBus bus = CreateBus(config, loggerFactory); IAwsClientFactoryProxy proxy = CreateFactoryProxy(); if (PublicationsBuilder != null) { PublicationsBuilder.Configure(bus, proxy, loggerFactory); } return(bus); }
/// <summary> /// Creates a new instance of <see cref="IMessagePublisher"/>. /// </summary> /// <returns> /// The created instance of <see cref="IMessagePublisher"/> /// </returns> public IMessagePublisher BuildPublisher() { IMessagingConfig config = CreateConfig(); config.Validate(); ILoggerFactory loggerFactory = ServicesBuilder?.LoggerFactory?.Invoke() ?? ServiceResolver.ResolveService <ILoggerFactory>(); JustSayingBus publisher = CreateBus(config, loggerFactory); JustSayingFluently fluent = CreateFluent(publisher, loggerFactory); if (PublicationsBuilder != null) { PublicationsBuilder.Configure(fluent); } return(publisher); }
public JustSayingBus( IMessagingConfig config, IMessageSerializationRegister serializationRegister, ILoggerFactory loggerFactory) { _loggerFactory = loggerFactory; _startupTasks = new List <Func <Task> >(); _log = _loggerFactory.CreateLogger("JustSaying"); Config = config; Monitor = new NullOpMessageMonitor(); MessageContextAccessor = new MessageContextAccessor(); SerializationRegister = serializationRegister; MiddlewareMap = new MiddlewareMap(); _publishersByType = new Dictionary <Type, IMessagePublisher>(); _subscriptionGroupSettings = new ConcurrentDictionary <string, SubscriptionGroupConfigBuilder>(StringComparer.Ordinal); _defaultSubscriptionGroupSettings = new SubscriptionGroupSettingsBuilder(); }
public JustSayingBus( IMessagingConfig config, IMessageSerializationRegister serializationRegister, ILoggerFactory loggerFactory, IMessageMonitor monitor) { _loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory)); _monitor = monitor ?? throw new ArgumentNullException(nameof(monitor)); _startupTasks = new List <Func <CancellationToken, Task> >(); _log = _loggerFactory.CreateLogger("JustSaying"); Config = config; SerializationRegister = serializationRegister; MiddlewareMap = new MiddlewareMap(); _publishersByType = new Dictionary <Type, IMessagePublisher>(); _subscriptionGroupSettings = new ConcurrentDictionary <string, SubscriptionGroupConfigBuilder>(StringComparer.Ordinal); _defaultSubscriptionGroupSettings = new SubscriptionGroupSettingsBuilder(); }
/// <summary> /// Gets the next informed queue's message and deserializes it to an object. /// Once the message is dequeued, it is deleted from the queue. /// Depending on the service, this method may take a few seconds to return, waiting for new messages before completion. /// If no message is found, returns null. /// </summary> /// <typeparam name="T">The type to which the message will be deserialized to.</typeparam> /// <param name="config">The queue configuration.</param> /// <exception cref="InvalidOperationException">Occurs when the connection to the server fails.</exception> public static T Dequeue <T>(string queueName, IMessagingConfig config) { queueName = queueName.ToLower(); Utils.ValidateQueueName(queueName, true); object deserialized = null; Exception exToThrow = null; using (var client = new Messaging(config)) { var transporter = client.GetTransporter(queueName); transporter.DequeueSingleMessage(queueName, (msg) => { if (msg == null) { deserialized = null; return(true); } try { deserialized = Utils.DeserializeObject <T>(msg); return(true); } catch (Exception e) { exToThrow = e; return(false); } }); } if (exToThrow != null) { throw new InvalidCastException("Error parsing the object. Message requeued.", exToThrow); } return((T)deserialized); }
/// <summary> /// Creates a new instance of <see cref="IMessagingBus"/>. /// </summary> /// <returns> /// The created instance of <see cref="IMessagingBus"/> /// </returns> public IMessagingBus BuildSubscribers() { IMessagingConfig config = CreateConfig(); config.Validate(); ILoggerFactory loggerFactory = ServicesBuilder?.LoggerFactory?.Invoke() ?? ServiceResolver.ResolveService <ILoggerFactory>(); JustSayingBus bus = CreateBus(config, loggerFactory); IVerifyAmazonQueues creator = CreateQueueCreator(loggerFactory); if (ServicesBuilder?.MessageContextAccessor != null) { bus.MessageContextAccessor = ServicesBuilder.MessageContextAccessor(); } if (SubscriptionBuilder != null) { SubscriptionBuilder.Configure(bus, ServiceResolver, creator, loggerFactory); } return(bus); }
/// <summary> /// Sends an object to the configured service. /// </summary> /// <param name="objMessage">The object to be serialized and sent as message.</param> /// <param name="config">The queue configuration.</param> /// <exception cref="InvalidOperationException">Occurs when the connection to the server fails.</exception> public static void Enqueue(string queueName, object objMessage, IMessagingConfig config) { Enqueue(queueName, Utils.SerializeObject(objMessage), config); }
protected virtual void Given() { Config = Substitute.For <IMessagingConfig>(); Monitor = new TrackingLoggingMonitor(LoggerFactory.CreateLogger <TrackingLoggingMonitor>()); }
protected virtual void Given() { Config = Substitute.For <IMessagingConfig>(); Monitor = Substitute.For <IMessageMonitor>(); }
/// <summary> /// Sends an object to the configured service. /// </summary> /// <param name="objMessage">The object to be serialized and sent as message.</param> /// <param name="config">The queue configuration.</param> /// <exception cref="InvalidOperationException">Occurs when the connection to the server fails.</exception> public static void Enqueue(string queueName, string message, IMessagingConfig config) { using (var client = new Messaging(config)) client.EnqueueMessage(queueName, message); }
public Messaging(IMessagingConfig config) { _config = config ?? throw new ArgumentNullException(nameof(config)); _brokers = new Dictionary <string, IBrokerTransport>(StringComparer.OrdinalIgnoreCase); }
protected virtual void Given() { Config = Substitute.For <IMessagingConfig>(); LoggerFactory = Substitute.For <ILoggerFactory>(); }
protected override void Given() { Config = Substitute.For <IMessagingConfig>(); Monitor = Substitute.For <IMessageMonitor>(); LoggerFactory = Substitute.For <ILoggerFactory>(); }
protected override void Given() { Config = Substitute.For <IMessagingConfig>(); }