4 Commits

Author SHA1 Message Date
kunkliricsi 802806b4c2 Renamed frontend service to Message Queue Service
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2021-01-17 18:01:15 +01:00
kunkliricsi 79dcb4d75a Added RabbitMq IsConnected
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2021-01-17 17:13:26 +01:00
kunkliricsi 7c67fa7de0 Array empty
continuous-integration/drone/push Build is passing
2021-01-17 16:54:39 +01:00
kunkliricsi e9ffe514dd Added new rabbitmq configs
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2021-01-17 16:45:11 +01:00
7 changed files with 81 additions and 14 deletions
@@ -82,7 +82,7 @@ namespace Birdmap.API.Controllers
Service = new() Service = new()
{ {
Id = 0, Id = 0,
Name = "Mqtt Client Service", Name = "Message Queue Service",
Uri = "localhost", Uri = "localhost",
}, },
Response = $"IsConnected: {_communicationService.IsConnected}", Response = $"IsConnected: {_communicationService.IsConnected}",
+2 -3
View File
@@ -12,6 +12,7 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Microsoft.IdentityModel.Tokens; using Microsoft.IdentityModel.Tokens;
using NSwag.Generation.Processors.Security; using NSwag.Generation.Processors.Security;
using System;
using System.Text; using System.Text;
namespace Birdmap.API namespace Birdmap.API
@@ -71,7 +72,7 @@ namespace Birdmap.API
{ {
opt.Title = "Birdmap"; opt.Title = "Birdmap";
opt.OperationProcessors.Add(new OperationSecurityScopeProcessor("Jwt Token")); opt.OperationProcessors.Add(new OperationSecurityScopeProcessor("Jwt Token"));
opt.AddSecurity("Jwt Token", new string[] { }, opt.AddSecurity("Jwt Token", Array.Empty<string>(),
new NSwag.OpenApiSecurityScheme new NSwag.OpenApiSecurityScheme
{ {
Type = NSwag.OpenApiSecuritySchemeType.ApiKey, Type = NSwag.OpenApiSecuritySchemeType.ApiKey,
@@ -95,11 +96,9 @@ namespace Birdmap.API
app.UseOpenApi(); app.UseOpenApi();
app.UseSwaggerUi3(); app.UseSwaggerUi3();
app.UseHttpsRedirection();
app.UseStaticFiles(); app.UseStaticFiles();
app.UseSpaStaticFiles(); app.UseSpaStaticFiles();
app.UseAuthentication(); app.UseAuthentication();
app.UseRouting(); app.UseRouting();
app.UseAuthorization(); app.UseAuthorization();
+15
View File
@@ -27,10 +27,25 @@
"UseRabbitMq": false, "UseRabbitMq": false,
"Mqtt": { "Mqtt": {
"BrokerHostSettings": { "BrokerHostSettings": {
"VirtualHost": "",
"Host": "", "Host": "",
"Port": 1883 "Port": 1883
}, },
"ExchangeSettings": {
"Name": "",
"Type": "",
"Durable": false,
"AutoDelete": false
},
"QueueSettings": {
"Name": "",
"Durable": false,
"Exclusive": false,
"AutoDelete": false
},
"ClientSettings": { "ClientSettings": {
"Id": "ASP.NET Core client", "Id": "ASP.NET Core client",
"Username": "", "Username": "",
+8 -1
View File
@@ -1,4 +1,11 @@
namespace Birdmap.BLL.Options namespace Birdmap.BLL.Options
{ {
public record RabbitMqClientOptions(string Hostname, int Port, string Username, string Password, string Topic); public record RabbitMqClientOptions(
string Hostname, int Port, string VirtualHost,
string Username, string Password,
string ExchangeName, string ExchangeType,
bool ExchangeDurable, bool ExchangeAutoDelete,
string QueueName,
bool QueueDurable, bool QueueAutoDelete, bool QueueExclusive,
string Topic);
} }
@@ -17,14 +17,14 @@ namespace Birdmap.BLL.Services.CommunationServices.RabbitMq
private IConnection _connection; private IConnection _connection;
private IModel _channel; private IModel _channel;
private readonly IConnectionFactory _factory; private readonly IConnectionFactory _factory;
private readonly string _topic; private readonly RabbitMqClientOptions _options;
public override bool IsConnected => throw new NotImplementedException(); public override bool IsConnected => _connection.IsOpen;
public RabbitMqClientService(RabbitMqClientOptions options, ILogger<RabbitMqClientService> logger, IInputService inputService, IHubContext<DevicesHub, IDevicesHubClient> hubContext) public RabbitMqClientService(RabbitMqClientOptions options, ILogger<RabbitMqClientService> logger, IInputService inputService, IHubContext<DevicesHub, IDevicesHubClient> hubContext)
: base(logger, inputService, hubContext) : base(logger, inputService, hubContext)
{ {
_topic = options.Topic; _options = options;
_factory = new ConnectionFactory() _factory = new ConnectionFactory()
{ {
HostName = options.Hostname, HostName = options.Hostname,
@@ -85,17 +85,26 @@ namespace Birdmap.BLL.Services.CommunationServices.RabbitMq
_connection = _factory.CreateConnection(); _connection = _factory.CreateConnection();
_channel = _connection.CreateModel(); _channel = _connection.CreateModel();
_channel.ExchangeDeclare(exchange: "topic_logs", type: "topic"); _channel.ExchangeDeclare(
var queueName = _channel.QueueDeclare().QueueName; exchange: _options.ExchangeName,
type: _options.ExchangeType,
durable: _options.ExchangeDurable,
autoDelete: _options.ExchangeAutoDelete);
_channel.QueueBind(queue: queueName, _channel.QueueDeclare(
exchange: "topic_logs", queue: _options.QueueName,
routingKey: _topic); durable: _options.QueueDurable,
exclusive: _options.QueueExclusive,
autoDelete: _options.QueueAutoDelete);
_channel.QueueBind(queue: _options.QueueName,
exchange: _options.ExchangeName,
routingKey: _options.Topic);
var consumer = new AsyncEventingBasicConsumer(_channel); var consumer = new AsyncEventingBasicConsumer(_channel);
consumer.Received += OnRecieved; consumer.Received += OnRecieved;
_channel.BasicConsume(queue: queueName, _channel.BasicConsume(queue: _options.QueueName,
autoAck: true, autoAck: true,
consumer: consumer); consumer: consumer);
+28
View File
@@ -61,6 +61,25 @@ namespace Birdmap.BLL
{ {
Host = brokerHost.GetValue<string>("Host"), Host = brokerHost.GetValue<string>("Host"),
Port = brokerHost.GetValue<int>("Port"), Port = brokerHost.GetValue<int>("Port"),
VirtualHost = brokerHost.GetValue<string>("VirtualHost"),
};
var exchange = mqtt.GetSection("ExchangeSettings");
var exchangeSettings = new
{
Name = exchange.GetValue<string>("Name"),
Type = exchange.GetValue<string>("Type"),
Durable = exchange.GetValue<bool>("Durable"),
AutoDelete = exchange.GetValue<bool>("AutoDelete"),
};
var queue = mqtt.GetSection("QueueSettings");
var queueSettings = new
{
Name = queue.GetValue<string>("Name"),
Durable = exchange.GetValue<bool>("Durable"),
Exclusive = exchange.GetValue<bool>("Exclusive"),
AutoDelete = exchange.GetValue<bool>("AutoDelete"),
}; };
if (configuration.GetValue<bool>("UseRabbitMq")) if (configuration.GetValue<bool>("UseRabbitMq"))
@@ -68,8 +87,17 @@ namespace Birdmap.BLL
services.AddRabbitMqClientServiceWithConfig(new RabbitMqClientOptions( services.AddRabbitMqClientServiceWithConfig(new RabbitMqClientOptions(
Hostname: brokerHostSettings.Host, Hostname: brokerHostSettings.Host,
Port: brokerHostSettings.Port, Port: brokerHostSettings.Port,
VirtualHost: brokerHostSettings.VirtualHost,
Username: clientSettings.Username, Username: clientSettings.Username,
Password: clientSettings.Password, Password: clientSettings.Password,
ExchangeName: exchangeSettings.Name,
ExchangeType: exchangeSettings.Type,
ExchangeDurable: exchangeSettings.Durable,
ExchangeAutoDelete: exchangeSettings.AutoDelete,
QueueName: queueSettings.Name,
QueueDurable: queueSettings.Durable,
QueueExclusive: queueSettings.Exclusive,
QueueAutoDelete: queueSettings.AutoDelete,
Topic: clientSettings.Topic)); Topic: clientSettings.Topic));
} }
else else
+9
View File
@@ -41,6 +41,15 @@ services:
- Birdmap_UseRabbitMq=false - Birdmap_UseRabbitMq=false
- Birdmap_Mqtt__BrokerHostSettings__Host=localhost - Birdmap_Mqtt__BrokerHostSettings__Host=localhost
- Birdmap_Mqtt__BrokerHostSettings__Port=1883 - Birdmap_Mqtt__BrokerHostSettings__Port=1883
- Birdmap_Mqtt__BrokerHostSettings__VirtualHost=/
- Birdmap_Mqtt__ExchangeSettings__Name=birbmapexchange
- Birdmap_Mqtt__ExchangeSettings__Type=fanout
- Birdmap_Mqtt__ExchangeSettings__Durable=true
- Birdmap_Mqtt__ExchangeSettings__AutoDelete=true
- Birdmap_Mqtt__QueueSettings__Name=birbmapqueue
- Birdmap_Mqtt__QueueSettings__Durable=true
- Birdmap_Mqtt__QueueSettings__Exclusive=true
- Birdmap_Mqtt__QueueSettings__AutoDelete=true
- Birdmap_Mqtt__ClientSettings__Id=ASP.NET Core client - Birdmap_Mqtt__ClientSettings__Id=ASP.NET Core client
- Birdmap_Mqtt__ClientSettings__Username=username - Birdmap_Mqtt__ClientSettings__Username=username
- Birdmap_Mqtt__ClientSettings__Password=password - Birdmap_Mqtt__ClientSettings__Password=password