예제 #1
0
        public void DeclareQueue(string name)
        {
            var connection = _serviceBusConnectionFactory.ResolveServiceBusConnection();

            connection.Channel.QueueDeclare(name, false, false, true, null);
            Name = name;
        }
예제 #2
0
        public void Subscribe <T>(string queueName, Func <T, IRequestInfo, Task> callback) where T : IServiceBusMessage
        {
            var connection = _serviceBusConnectionFactory.ResolveServiceBusConnection();
            var consumer   = _factory.CreateBasicConsumer(connection.Channel);

            consumer.Received += (sender, args) => _serviceBusMessageHandler.Handle(sender, args, callback);
            connection.Channel.BasicConsume(queueName, true, consumer);
        }
예제 #3
0
        void Publish <T>(T message, IRequestInfo requestInfo, string exchange, string routingKey) where T : IServiceBusMessage
        {
            var messageJson = _jsonConvertWrapper.Serialize(message);
            var requestJson = _jsonConvertWrapper.Serialize(requestInfo);
            var json        = requestJson + "\t" + messageJson;
            var body        = _utf8Wrapper.GetBytes(json);
            var connection  = _serviceBusConnectionFactory.ResolveServiceBusConnection();

            connection.Channel.BasicPublish(exchange, routingKey, true, new BasicProperties(), body);
            _logger.LogInformation($"Published message with key: {routingKey}", "RabbitMq");
        }
예제 #4
0
        public void CreateExchange(string name, string type)
        {
            var connection = _serviceBusConnectionFactory.ResolveServiceBusConnection();

            connection.Channel.ExchangeDeclare(name, type, false, false, null);
        }