private static void GenerateSettingsFiles(string ms, string pg, string d, string u, string p, FileInfo o) { IMetadataService metadataService = new MetadataService(); if (!string.IsNullOrWhiteSpace(ms)) { metadataService.UseDatabaseProvider(DatabaseProviders.SQLServer); metadataService.ConfigureConnectionString(ms, d, u, p); } else { metadataService.UseDatabaseProvider(DatabaseProviders.PostgreSQL); metadataService.ConfigureConnectionString(pg, d, u, p); } InfoBase infoBase = metadataService.LoadInfoBase(); MessageConsumerSettings consumerSettings = CreateConsumerSettings(infoBase, metadataService); MessageProducerSettings producerSettings = CreateProducerSettings(infoBase, metadataService); string consumerPath = Path.Combine(o.FullName, CONSUMER_SETTINGS_FILE_NAME); string producerPath = Path.Combine(o.FullName, PRODUCER_SETTINGS_FILE_NAME); SaveConsumerSettings(consumerPath, consumerSettings); SaveProducerSettings(producerPath, producerSettings); }
public MessageProducer(MessageProducerSettings messageProducerSettings) { _messageProducerSettings = messageProducerSettings; _properties = _messageProducerSettings.Channel.CreateBasicProperties(); _properties.Persistent = true; }
private static void ConfigureDaJetAgentOptions(IServiceCollection services) { MessageProducerSettings settings = new MessageProducerSettings(); IConfigurationRoot config = new ConfigurationBuilder() .SetBasePath(AppSettings.AppCatalog) .AddJsonFile("producer-settings.json", optional: false) .Build(); config.Bind(settings); DaJetAgentOptions options = new DaJetAgentOptions() { DatabaseProvider = settings.DatabaseSettings.DatabaseProvider, ConnectionString = settings.DatabaseSettings.ConnectionString, HostName = settings.MessageBrokerSettings.HostName, VirtualHost = settings.MessageBrokerSettings.VirtualHost, PortNumber = settings.MessageBrokerSettings.PortNumber, UserName = settings.MessageBrokerSettings.UserName, Password = settings.MessageBrokerSettings.Password, ExchangeRole = (settings.MessageBrokerSettings.ExchangeRole == 0 ? ExchangeRoles.Aggregator : ExchangeRoles.Dispatcher) }; services.AddSingleton(Options.Create(options)); }
private static void ConfigureProducerSettings(IServiceCollection services, string catalogPath) { MessageProducerSettings settings = new MessageProducerSettings(); IConfigurationRoot config = new ConfigurationBuilder() .SetBasePath(catalogPath) .AddJsonFile("producer-settings.json", optional: false) .Build(); config.Bind(settings); services.Configure <MessageProducerSettings>(config); }
private void DeleteExchange(IModel channel, MessageProducerSettings settings) { try { channel.ExchangeDelete(settings.ExchangeName); Console.WriteLine($"Exchange [{settings.ExchangeName}] deleted."); } catch (Exception ex) { Console.WriteLine($"Exchange delete error:"); Console.WriteLine(ex.Message); } }
private void DeleteQueue(IModel channel, MessageProducerSettings settings) { try { uint purged = channel.QueueDelete(settings.QueueName); Console.WriteLine($"Queue [{settings.QueueName}] deleted. {purged} messages purged."); } catch (Exception ex) { Console.WriteLine($"Queue delete error:"); Console.WriteLine(ex.Message); } }
private void UnbindQueue(IModel channel, MessageProducerSettings settings) { try { channel.QueueUnbind(settings.QueueName, settings.ExchangeName, string.Empty); Console.WriteLine($"Queue [{settings.QueueName}] unbined from exchange [{settings.ExchangeName}] successfeully."); } catch (Exception ex) { Console.WriteLine($"Queue unbind error:"); Console.WriteLine(ex.Message); } }
private void InitializeTestSettings() { MessageProducerSettings settings = new MessageProducerSettings() { MessageBrokerSettings = new MessageBrokerSettings() { HostName = "localhost", UserName = "******", Password = "******", PortNumber = 5672 } }; Settings = Options.Create(settings); }
private void InitializeTestSettings() { MessageProducerSettings settings = new MessageProducerSettings() { HostName = "localhost", VirtualHost = "/", UserName = "******", Password = "******", PortNumber = 5672, RoutingKey = "", QueueName = "dajet-queue", ExchangeName = "dajet-exchange" }; Settings = Options.Create(settings); }
private bool TryCreateExchange(IModel channel, MessageProducerSettings settings) { bool result = true; try { channel.ExchangeDeclare(settings.ExchangeName, ExchangeType.Topic, true, false, null); } catch (Exception ex) { result = false; Console.WriteLine("Exchange declare error:"); Console.WriteLine(ex.Message); } return(result); }
private static void SaveProducerSettings(string filePath, MessageProducerSettings producerSettings) { JsonSerializerOptions options = new JsonSerializerOptions() { WriteIndented = true, Encoder = JavaScriptEncoder.Create(UnicodeRanges.All) }; byte[] bytes = JsonSerializer.SerializeToUtf8Bytes(producerSettings, options); string json = Encoding.UTF8.GetString(bytes); using (StreamWriter stream = new StreamWriter(filePath, false, Encoding.UTF8)) { stream.Write(json); } }
private static MessageProducerSettings CreateProducerSettings(IMetadataService metadataService) { MessageProducerSettings settings = new MessageProducerSettings(); settings.MessageBrokerSettings.TopicExchange = string.Format("{0}.{1}", EXCHANGE_NAMESPACE, PRODUCER_EXCHANGE_NAME); //ApplicationObject metaObject = infoBase.InformationRegisters.Values // .Where(с => с.Name == PRODUCER_TABLE_QUEUE_NAME).FirstOrDefault(); //if (metaObject == null) return settings; settings.DatabaseSettings = new Producer.DatabaseSettings() { DatabaseProvider = metadataService.DatabaseProvider, ConnectionString = metadataService.ConnectionString }; return(settings); }
private static MessageProducerSettings CreateProducerSettings(InfoBase infoBase, IMetadataService metadataService) { MessageProducerSettings settings = new MessageProducerSettings(); MetadataObject metaObject = infoBase.InformationRegisters.Values.Where(с => с.Name == PRODUCER_TABLE_QUEUE_NAME).FirstOrDefault(); if (metaObject == null) { return(settings); } metadataService.EnrichFromDatabase(metaObject); settings.DatabaseSettings = new Producer.DatabaseSettings() { DatabaseProvider = metadataService.DatabaseProvider, ConnectionString = metadataService.ConnectionString, DatabaseQueue = new Producer.DatabaseQueue() { TableName = metaObject.TableName, ObjectName = string.Format("{0}.{1}", METAOBJECT_BASE_NAME, PRODUCER_TABLE_QUEUE_NAME) } }; foreach (MetadataProperty property in metaObject.Properties) { foreach (DatabaseField field in property.Fields) { settings.DatabaseSettings.DatabaseQueue.Fields.Add(new Producer.TableField() { Name = field.Name, Property = property.Name }); } } return(settings); }
private static void CreateRabbitMQQueues(string ms, string pg, string d, string u, string p, string rmq) { Console.Write(string.Format(CREATE_RABBITMQ_QUEUES_QUESTION, rmq)); string answer = Console.ReadLine(); if (answer.ToLowerInvariant() != "y") { return; } Console.Write(INPUT_HOST_TEXT); string host = Console.ReadLine(); Console.Write(INPUT_PORT_TEXT); string port = Console.ReadLine(); Console.Write(INPUT_USER_TEXT); string user = Console.ReadLine(); Console.Write(INPUT_PASS_TEXT); string pass = Console.ReadLine(); MessageProducerSettings settings = CreateMessageBrokerSettings(host, port, user, pass); IMetadataService metadataService = new MetadataService(); if (!string.IsNullOrWhiteSpace(ms)) { metadataService.UseDatabaseProvider(DatabaseProviders.SQLServer); metadataService.ConfigureConnectionString(ms, d, u, p); } else { metadataService.UseDatabaseProvider(DatabaseProviders.PostgreSQL); metadataService.ConfigureConnectionString(pg, d, u, p); } Console.WriteLine(LOADING_METADATA_NOTICE); InfoBase infoBase = metadataService.LoadInfoBase(); Console.WriteLine(METADATA_LOADED_NOTICE); MetadataObject metaObject = infoBase.Publications.Values.Where(p => p.Name == rmq).FirstOrDefault(); if (metaObject == null) { Console.WriteLine(string.Format(PUBLICATION_IS_NOT_FOUND_WARNING, rmq)); return; } if (!(metaObject is Publication publication)) { Console.WriteLine(string.Format(PUBLICATION_IS_NOT_FOUND_WARNING, rmq)); return; } PublicationDataMapper mapper = new PublicationDataMapper(); mapper.UseDatabaseProvider(metadataService.DatabaseProvider); mapper.UseConnectionString(metadataService.ConnectionString); mapper.SelectSubscribers(publication); using (IConnection messageBroker = CreateConnection(settings.MessageBrokerSettings)) { string queueName; foreach (Subscriber subscriber in publication.Subscribers) { if (subscriber.IsMarkedForDeletion) { continue; } queueName = CreateQueueName(publication.Publisher.Code, subscriber.Code); CreateExchangeAndQueue(messageBroker, queueName); queueName = CreateQueueName(subscriber.Code, publication.Publisher.Code); CreateExchangeAndQueue(messageBroker, queueName); } } }
[TestMethod] public void ConfigureTopicExchange() { MessageProducerSettings settings = new MessageProducerSettings() { HostName = "", VirtualHost = "/", UserName = "", Password = "", PortNumber = 5672, RoutingKey = "", QueueName = "", ExchangeName = "" }; //Settings = Options.Create(settings); IConnectionFactory factory = new ConnectionFactory() { HostName = settings.HostName, VirtualHost = settings.VirtualHost, UserName = settings.UserName, Password = settings.Password, Port = settings.PortNumber }; IConnection connection = factory.CreateConnection(); IModel channel = connection.CreateModel(); if (TryCreateExchange(channel, settings)) { Console.WriteLine($"Exchange [{settings.ExchangeName}] declared successfully."); } else { DisposeResources(connection, channel); return; } //try //{ // QueueDeclareOk result = channel.QueueDeclarePassive(settings.QueueName); // Console.WriteLine("Queue name = " + result.QueueName); // Console.WriteLine("Message count = " + result.MessageCount.ToString()); // Console.WriteLine("Consumer count = " + result.ConsumerCount.ToString()); //} //catch (Exception ex) //{ // Console.WriteLine($"Queue [{settings.QueueName}] not found."); // Console.WriteLine(ex.Message); //} //Console.WriteLine(); //try //{ // channel.ExchangeDeclarePassive(settings.ExchangeName); // Console.WriteLine("Exchange name = " + settings.ExchangeName); //} //catch (Exception ex) //{ // Console.WriteLine($"Exchange [{settings.ExchangeName}] not found."); // Console.WriteLine(ex.Message); //} //Console.WriteLine(); //UnbindQueue(channel, settings); //Console.WriteLine(); //DeleteQueue(channel, settings); //Console.WriteLine(); //DeleteExchange(channel, settings); DisposeResources(connection, channel); }