Ejemplo n.º 1
0
 public RedisQueueRawServerListener(MQConnection connection, IMQueueRawServer server, bool responseServer) : base(connection, server, responseServer)
 {
     _name = server.Name;
     _messageHandlerDelegate = new Action <RedisChannel, RedisValue>(MessageHandler);
     _processDelegate        = new Func <RedisValue, Task>(ProcessingTaskAsync);
     _monitorDelegate        = new Func <Task>(MonitorProcess);
 }
Ejemplo n.º 2
0
 protected MQueueRawServerListenerBase(MQConnection connection, IMQueueRawServer server, bool responseServer)
 {
     Connection         = connection;
     Config             = server.Config;
     Counters           = new MQRawServerCounters(server.Name + "\\Listener (" + connection?.Route + ")", server.Config.IgnoreServerCounters);
     ReceiverSerializer = server.ReceiverSerializer;
     ResponseServer     = responseServer;
     Core.Status.Attach(collection =>
     {
         collection.Add("Connection Route:", Connection?.Route);
         collection.Add("Connection Name:", Connection?.Name);
         collection.Add(nameof(ResponseServer), ResponseServer);
         Core.Status.AttachChild(Counters, this);
     });
 }
Ejemplo n.º 3
0
        /// <inheritdoc />
        /// <summary>
        /// On Service Start method
        /// </summary>
        /// <param name="args">Start arguments</param>
        public void OnStart(string[] args)
        {
            try
            {
                Core.Log.InfoBasic("Starting messaging service");
                _cTokenSource = new CancellationTokenSource();
                OnInit(args);
                QueueServer = GetQueueServer();
                if (QueueServer is null)
                {
                    throw new Exception("The queue server is null, please check the configuration file and ensure the Types assemblies are on the assembly folder.");
                }
                Processor = GetMessageProcessorAsync(QueueServer);
                if (Processor is null)
                {
                    throw new Exception("The message processor is null, please check your GetMessageProcessor method implementation.");
                }
                if (QueueServer.ResponseServer)
                {
                    QueueServer.ResponseReceived += async(s, e) =>
                    {
                        if (MessageReceived != null)
                        {
                            await MessageReceived.InvokeAsync(this, new RawMessageEventArgs(e.Message, e.CorrelationId)).ConfigureAwait(false);
                        }
                        await Processor.ProcessAsync(e, _cTokenSource.Token).ConfigureAwait(false);
                    };
                }
                else
                {
                    QueueServer.RequestReceived += async(s, e) =>
                    {
                        if (MessageReceived != null)
                        {
                            await MessageReceived.InvokeAsync(this, new RawMessageEventArgs(e.Request, e.CorrelationId)).ConfigureAwait(false);
                        }
                        var result = await Processor.ProcessAsync(e, _cTokenSource.Token).ConfigureAwait(false);

                        if (result != ResponseMessage.NoResponse && result != null)
                        {
                            if (result is byte[] rBytes)
                            {
                                e.Response = rBytes;
                            }
                            else if (result is MultiArray <byte> mBytes)
                            {
                                e.Response = mBytes;
                            }
                            else
                            {
                                e.Response = QueueServer.SenderSerializer.Serialize(result);
                            }
                        }
                    };
                    QueueServer.BeforeSendResponse += async(s, e) =>
                    {
                        if (BeforeSendMessage != null)
                        {
                            await BeforeSendMessage.InvokeAsync(this, new RawMessageEventArgs(e.Message, e.CorrelationId)).ConfigureAwait(false);
                        }
                    };
                    QueueServer.ResponseSent += async(s, e) =>
                    {
                        if (MessageSent != null)
                        {
                            await MessageSent.InvokeAsync(this, new RawMessageEventArgs(e.Message, e.CorrelationId)).ConfigureAwait(false);
                        }
                    };
                }

                Processor.Init();
                QueueServer.StartListeners();
                Core.Log.InfoBasic("Messaging service started.");

                Core.Status.Attach(collection =>
                {
                    Core.Status.AttachChild(Processor, this);
                    Core.Status.AttachChild(QueueServer, this);
                });
            }
            catch (Exception ex)
            {
                Core.Log.Write(ex);
                throw;
            }
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Gets the message processor
 /// </summary>
 /// <param name="server">Queue server object instance</param>
 /// <returns>Message processor instance</returns>
 protected abstract IMessageProcessorAsync GetMessageProcessorAsync(IMQueueRawServer server);
 public NATSQueueRawServerListener(MQConnection connection, IMQueueRawServer server, bool responseServer) : base(connection, server, responseServer)
 {
     _factory = new ConnectionFactory();
     _name    = server.Name;
 }
 public RabbitMQueueRawServerListener(MQConnection connection, IMQueueRawServer server, bool responseServer) : base(connection, server, responseServer)
 {
     _name = server.Name;
 }
Ejemplo n.º 7
0
 public RabbitMQueueRawServerListener(MQConnection connection, IMQueueRawServer server, bool responseServer) : base(connection, server, responseServer)
 {
     _name = server.Name;
     _processingTaskAsyncDelegate = ProcessingTaskAsync;
 }