Files
messengerapi.QueryClient/code/MessengerApi.QueryClient.Example/Program.cs
masiton 9766124241
All checks were successful
Pack and Push NuGet Package / publish (push) Successful in 43s
Implementation carried over from v1.
2025-07-05 05:11:04 +02:00

60 lines
2.1 KiB
C#

using MessengerApi.Model;
using MessengerApi.Model.Messages;
using portaloggy;
namespace MessengerApi.Example
{
internal class Program
{
static void Main(string[] args)
{
var logger = new ConsoleLogger() { IsMessageSeverityColoringEnabled = true};
var httpClient = new HttpClient();
// Client 1 will demonstrate querying approach.
var client1 = new QueryClient(
new Credentials(
"aab8f7e9-ad13-4bf8-bb2e-0cd93d81adc0",
"http://localhost:5259"),
httpClient,
logger);
// Client 2 is subscription client waiting for the queries.
var client2 = new SubscriptionClient(
new Credentials(
"8f73f683-7cb3-40df-998e-6e604aef0e53",
"http://localhost:5259"),
httpClient,
logger);
var user1 = Guid.Parse("f696442b-e8dc-4074-b34f-94bcece8e74b");
var user2 = Guid.Parse("15d97720-f5b7-47aa-9c1a-71f98b0b9248");
// Subscribe client 2 to questions.
var client2Subscription = client2.Subscribe("TEST");
client2Subscription.OnMessage += (s, m) =>
{
logger.Info($"Received subscribed message - {m.Payload}");
client2.SendMessage(new OutboxMessage
{
ToUserId = m.Sender,
Payload = "ANSWER",
PayloadType = m.PayloadType
});
};
// Demonstrate query pipeline. Client 1 sends query and waits for response.
// Client 2 is subscribed to those messages and will send an answer right away.
var answer = client1.Query(new OutboxMessage
{
ToUserId = user2,
PayloadType = "TEST",
Payload = "QUESTION"
}).GetAwaiter().GetResult();
logger.Info($"Received answer message to my query with payload: {answer.Payload}.");
}
}
}