/// <summary> /// Initializes a new instance of the <see cref="MessageProcessingRpcReceive{TReceivedMessage}" /> class. /// </summary> /// <param name="configurationReceive">The configuration receive.</param> /// <param name="receiveMessagesFactory">The receive messages factory.</param> /// <param name="messageContextFactory">The message context factory.</param> /// <param name="messageHandler">The message handler.</param> /// <param name="rpcContextFactory">The RPC context factory.</param> /// <param name="commitMessage">The commit message.</param> public MessageProcessingRpcReceive( QueueConsumerConfiguration configurationReceive, IReceiveMessagesFactory receiveMessagesFactory, IMessageContextFactory messageContextFactory, IMessageHandlerRegistration messageHandler, IRpcContextFactory rpcContextFactory, ICommitMessage commitMessage) { Guard.NotNull(() => configurationReceive, configurationReceive); Guard.NotNull(() => receiveMessagesFactory, receiveMessagesFactory); Guard.NotNull(() => messageContextFactory, messageContextFactory); Guard.NotNull(() => messageHandler, messageHandler); Guard.NotNull(() => rpcContextFactory, rpcContextFactory); Guard.NotNull(() => commitMessage, commitMessage); _configurationReceive = configurationReceive; _receiveMessagesFactory = receiveMessagesFactory; _messageContextFactory = messageContextFactory; _messageHandler = messageHandler; _rpcContextFactory = rpcContextFactory; _commitMessage = commitMessage; void Action(IReceivedMessage <TReceivedMessage> message, IWorkerNotification worker) { } messageHandler.Set((Action <IReceivedMessage <TReceivedMessage>, IWorkerNotification>)Action); }
/// <summary> /// Register a synchronous message handler delegate for the message type. /// </summary> /// <typeparam name="TMessage">Type of message.</typeparam> /// <param name="syncMessageHandler">Synchronous message handler delegate.</param> public static void Register <TMessage>(this IMessageHandlerRegistration registration, Action <TMessage> syncMessageHandler) where TMessage : class { if (registration == null) { throw new ArgumentNullException(nameof(registration)); } if (syncMessageHandler == null) { throw new ArgumentNullException(nameof(syncMessageHandler)); } // Convert to async delegate. registration.Register <TMessage>((message, cancellationToken) => { try { syncMessageHandler.Invoke(message); return(TaskUtility.CompletedTask); } catch (Exception ex) { return(TaskUtility.FromException(ex)); } }); }
public static bool IsPublishOnly(this IMessageHandlerRegistration handlerRegistration) { if (handlerRegistration == null) { throw new ArgumentNullException(nameof(handlerRegistration)); } var config = handlerRegistration.Configuration; if (config.Count == 0) { return(false); } var configEntry = config.OfType <PublishOnlyAttribute>().FirstOrDefault(); return(configEntry != null && configEntry.PublishOnly); }
public bool Register(IMessageHandlerRegistration handlerRegistration) { if (handlerRegistration == null) { throw new ArgumentNullException(nameof(handlerRegistration)); } var handlerCollection = _handlerRegistrations.GetOrAdd(handlerRegistration.MessageType, _ => new OrderedSet <IMessageHandlerRegistration>()); if (handlerCollection.Contains(handlerRegistration)) { return(false); } handlerCollection.Add(handlerRegistration); return(true); }
public bool Unregister(IMessageHandlerRegistration handlerRegistration) { if (handlerRegistration == null) { throw new ArgumentNullException(nameof(handlerRegistration)); } if (!_handlerRegistrations.TryGetValue(handlerRegistration.MessageType, out var handlerCollection)) { return(false); } if (!handlerCollection.Remove(handlerRegistration)) { return(false); } if (!handlerCollection.Any()) { _handlerRegistrations.Remove(handlerRegistration.MessageType); } return(true); }
public IEventProcessorConfiguration RegisterEventHandlers(ISessionMessagePump receiver, IMessageHandlerRegistration <IEventHandler> registrationSource) { foreach (var registration in registrationSource.GetRegistrations()) { AddMessageType(receiver, registration.Key, registration.Value.ToArray()); } // Continue. return(this); }
public void Subscribe(Messenger messenger) { _registration = messenger.Register<object>(ReceiveMessage); }
/// <summary> /// Initializes a new instance of the <see cref="RegisterMessages"/> class. /// </summary> /// <param name="messageHandlerRegistration">The message handler registration.</param> public RegisterMessages(IMessageHandlerRegistration messageHandlerRegistration) { Guard.NotNull(() => messageHandlerRegistration, messageHandlerRegistration); _messageHandlerRegistration = messageHandlerRegistration; }
/// <summary> /// Initializes a new instance of the <see cref="MessageHandler"/> class. /// </summary> /// <param name="messageHandlerRegistration">The message handler registration.</param> public MessageHandler(IMessageHandlerRegistration messageHandlerRegistration) { Guard.NotNull(() => messageHandlerRegistration, messageHandlerRegistration); _messageHandlerRegistration = messageHandlerRegistration; }