Rabbitmq
[ Rabbitmq ] Rabbitmq 사용하기 2 _ Request, Response 방식
code094
2022. 12. 27. 12:37
Rabbutmq rpc 방식으로 클라이언트에서 버튼 클릭시 서버에서 랜덤으로 영문자를 보내는 테스트 코드 작성

1. .Net에서 Rabbitmq 를 편하게 사용하기 위해 Easynetq 를 NuGet 패키지에서 설치한다.

2. 서버코드 작성
랜덤으로 7자리 문자열을 받아온다
public static StringData GetRandomString()
{
StringData strResult = new StringData();
Random rand = new Random();
string strRandomChar = "qwertyuiopasdfghjklzxcvbnm";
StringBuilder rs = new StringBuilder();
for (int i = 0; i < 7; i++)
{
rs.Append(strRandomChar[(int)(rand.NextDouble() * strRandomChar.Length)]);
}
strResult.ResultStringData = rs.ToString();
return strResult;
}
Rabbitmq 연결
var bus = RabbitHutch.CreateBus("host=localhost");
bus.Advanced.Conventions.RpcRoutingKeyNamingConvention += messageType => "RabbitmqRPC.RandomString";
bus.RespondAsync<Null, StringData>(req =>
Task.Factory.StartNew(()=>
{
StringData ResultString = new StringData();
try
{
ResultString = GetRandomString();
Console.WriteLine(ResultString.ResultStringData);
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
return ResultString;
}));
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
3. 클라이언트 코드 작성 (viewmodel, delegatecommand connect 3개의 클래스 사용)

ViewModel
private ICommand getStringData;
public ICommand GetStringData
{
get { return (this.getStringData) ?? (this.getStringData = new DelegateCommand(GetString)); }
}
public void GetString()
{
helper = new RabbitmqConnetHelper();
StringData item = helper.RequsetString();
}
4. 연결 확인
큐가 제대로 생성되었는지, 데이터가 잘 오고가는지 확인
