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. 연결 확인 

큐가 제대로 생성되었는지, 데이터가 잘 오고가는지 확인