Witam serdecznie.
Mam taki kod:
RabbitMQ:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using RabbitMQ.Client;
namespace InsuranceService.BusinessLogic.Logic.Carlnsurance
{
public class Rabbit
{
public IConnection GetConnection(string hostName, string userName, string password)
{
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.HostName = "localhost";
connectionFactory.UserName = "guest";
connectionFactory.Password = "guest";
connectionFactory.Port = 5672; // 5672 for regular connections, 5671 for connections that use TLS
return connectionFactory.CreateConnection();
}
public void Send(string queue, string data)
{
using (IConnection connection = new ConnectionFactory().CreateConnection())
{
using (IModel channel = connection.CreateModel())
{
channel.QueueDeclare(queue, false, false, false, null);
channel.BasicPublish(string.Empty, queue, null, Encoding.UTF8.GetBytes(data));
}
}
}
public void Receive(string queue)
{
using (IConnection connection = new ConnectionFactory().CreateConnection())
{
using (IModel channelconsumer = connection.CreateModel())
{
channelconsumer.QueueDeclare(queue, false, false, false, null);
BasicGetResult result = channelconsumer.BasicGet(queue, true);
if (result != null)
{
string data =
Encoding.UTF8.GetString(result.Body);
Console.WriteLine(data);
}
}
}
}
}
}
Main.CS
using RabbitMQ.Client;
using System.Text;
using System;
using InsuranceService.BusinessLogic.Logic.Carlnsurance;
namespace InsuranceService.ConsoleApp
{
public class Program
{
public static void Main(string[] args)
{
// Test RabbitMQ
Random rnd = new Random();
int num = rnd.Next(10000);
var sender = new Rabbit();
sender.Send("TestService", "Test Message ID: " + num);
sender.Receive("TestService");
Console.ReadLine();
}
}
}
Kod działa poprawnie. Dodaje komunikaty do Rabbita.
Mam teraz plik Works.CS:
using Newtonsoft.Json;
using System;
using System.Linq;
using System.Net;
using System.Text;
namespace Main.Sample
{
using System.Collections.Generic;
using System.Web.Script.Serialization;
using InsuranceService.Common.Helpers;
public class LogicMain
{
public CalculationResult GenerateResult(CalculationTask work, int resultNo, int resultCount, MotorContract result)
{
var result1 = new CalculationResult
{
Id = work.Id,
ResultNo = resultNo,
ResultCount = resultCount,
Result = new Result()
{
Data = result
}
};
return result1;
}
public ListOfCalculationTasks GetCalculationWorkList()
{
using (var webClient = new WebClient() { Encoding = Encoding.UTF8 })
{
var str = webClient.DownloadString(Settings.CalculationWorkerGetUrl);
Console.WriteLine(str);
return result;
}
}
public ListOfPolicyTasks GetPolicyWorkList()
{
using (var webClient = new WebClient() { Encoding = Encoding.UTF8 })
{
var str = webClient.DownloadString(Settings.PolicyWorkerGetUrl);
Console.WriteLine(str);
return result;
}
}
private void HandleError(string uploadResultUrl, dynamic task, Exception ex, string baseDir)
{
Console.WriteLine('error');
}
}
}
Powyższy kod zapisuje i wyświetla różne rzeczy na ekranie. To mi działa poprawnie.
Chciałbym teraz w każdym miejscu, gdzie mam Console.WriteLine zrobić zapis tego, co wyświetla
konsola do Rabbita.
W pliku głównym aplikacji nawiązuję połączenie. Czy da się zrobić dodawanie z poziomu tego Works.cs
danych z połączenia z pliku głównego? Jeśli tak, to w jaki sposób?
Bardzo proszę o pomoc.