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); }
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); }