1. NATS 서비스 실행
cmd 창에서 다음 명령을 사용하여 NATS 서비스를 활성화합니다.
docker run -p 4222:4222 nats -p 4222
2. WebApi Nats 서버 생성
ASP.NET Core 웹 API 프로젝트 만들기
Nsts.Client 너겟 패키지를 추가합니다.
ValuesController.cs를 추가하고 아래와 같이 클라이언트 측에 게시할 코드를 배치합니다.
using System.Text;
using Microsoft.AspNetCore.Mvc;
using NATS.Client;
namespace WebAppNatsSerer.Controllers
{
(Route("(controller)"))
public class ValuesController : Controller
{
// POST api/values
(HttpPost)
public IActionResult Post((FromBody) string value)
{
Thread.Sleep(5000);
ConnectionFactory cf = new ConnectionFactory();
Options opts = ConnectionFactory.GetDefaultOptions();
opts.Url = "nats://localhost:4222";
IConnection c = cf.CreateConnection(opts);
c.Publish("worker", Encoding.UTF8.GetBytes($"hello, world: {value}"));
c.Close();
return Ok();
}
}
}
(API가 호출되면 클라이언트 측에 게시됩니다.)
3. 고객 창출
ConsoleApp 프로젝트를 만들고 구독 코드를 붙여넣습니다.
게시하면 구독하는 시점에서 이벤트가 발생합니다.
(“worker”(subject)라는 채널을 통해 Pub/Sub가 됩니다.)
using NATS.Client;
namespace ConsoleAppNatsWorker
{
internal class Program
{
static void Main(string() args)
{
Console.WriteLine("Worker");
ConnectionFactory cf = new ConnectionFactory();
Options opts = ConnectionFactory.GetDefaultOptions();
opts.Url = "nats://localhost:4222";
IConnection c = cf.CreateConnection(opts);
EventHandler<MsgHandlerEventArgs> h = (sender, args) =>
{
Console.WriteLine($"worker received {args.Message}");
};
IAsyncSubscription s = c.SubscribeAsync("worker", h);
while (true)
{
Console.WriteLine("worker listening...");
Thread.Sleep(TimeSpan.FromSeconds(1));
}
}
}
}
(Worker listening…이 1초 간격으로 화면에 표시되고 게시가 진행 중일 때 수신 메시지가 표시됩니다.)
결과(실행 요청 서버 -> 클라이언트)
클라이언트 측은 아래와 같이 구독 후 대기합니다.
WebAPI가 호출되면 WebAPI에 게시합니다.
게시된 콘텐츠는 아래와 같이 클라이언트 측에서 렌더링됩니다.
(원천)
https://github.com/kei-soft/DockerNatsTest
GitHub – kei-soft/DockerNatsTest
GitHub에서 계정을 생성하여 kei-soft/DockerNatsTest 개발에 기여하십시오.
github.com