Пример #1
0
        public Task Produce(T message)
        {
            using var connection = _connectionProvider.CreateConnection();
            using var channel    = connection.CreateModel();

            var queueName      = NamingRule.WorkerQueueNameOf <T>();
            var queueDeclareOk = channel.QueueDeclare(queueName, false, false, false);

            var json        = JsonSerializer.Serialize(message);
            var bytes       = Encoding.UTF8.GetBytes(json);
            var messageType = typeof(T).AssemblyQualifiedName;

            var props = channel.CreateBasicProperties();

            // props.AppId = "MireroTicket";
            props.ContentEncoding = "utf8";
            props.ContentType     = "application/json";
            props.Headers         = new Dictionary <string, object>
            {
                ["message_type"] = messageType,
            };
            channel.BasicPublish("", queueName, props, bytes);

            return(Task.CompletedTask);
        }
Пример #2
0
        public void Start()
        {
            if (_connection != null || _channel != null)
            {
                Console.WriteLine("Consumer Already Started.");
                return;
            }

            var queueName = NamingRule.WorkerQueueNameOf <T>();

            _connection = _connectionProvider.CreateConnection();
            _channel    = _connection.CreateModel();
            _channel.QueueDeclare(queueName, false, false, false, null);

            _consumer           = new EventingBasicConsumer(_channel);
            _consumer.Received += OnReceived;
            _channel.BasicConsume(_consumer, queueName, true);
        }