예제 #1
0
        public void Publish(object message)
        {
            Guard.ArgumentNotNull(nameof(message), message);
            Guard.NotDisposed(_disposed, "RabbitMQMessenger");

            var messageTypeName = _builder.GetMessageTypeName(message.GetType());
            var messageText     = JsonConvert.SerializeObject(message);

            _model.BasicPublish(_exchangeName, messageTypeName, body: Encoding.UTF8.GetBytes(messageText));
        }
        public void PublishDelay(object message, TimeSpan delay)
        {
            Guard.ArgumentNotNull(nameof(message), message);
            Guard.NotDisposed(_disposed, "RabbitMQMessenger");

            var messageTypeName = _builder.GetMessageTypeName(message.GetType());
            var messageText     = JsonConvert.SerializeObject(message);
            var properties      = _delay.CreateBasicProperties();

            properties.Expiration = delay.TotalMilliseconds.ToString();

            _delay.BasicPublish(_delayExchange, messageTypeName, body: Encoding.UTF8.GetBytes(messageText), basicProperties: properties);
        }