메시지 송/수신
- RabbitMQ Publisher, RabbitMQ Consumer 2개 솔루션 생성해야합니다.
- Publisher : 메시지 발행
- Consumer : 메시지 수신
RabbitMQ.Client
nugetpackage 설치합니다.- v6.5.0
RabbitMQ-Publisher
- ConnectionFactory 클래스의 인스턴스 생성 : RabbitMQ 서버 접속을 위한 로그인 정보를 설정합니다.
- QueueDeclare 메소드를 사용하여 "hello"라는 큐를 선언합니다.
- BasicPublish 메소드를 사용하여 메시지를 전송합니다.
- exchange: 브로커에서 사용하는 exchange를 지정합니다. 여기에서는 빈 문자열을 지정하여 디폴트 exchange를 사용합니다.
- routingKey: 전송할 큐의 이름을 지정합니다.
- basicProperties: 메시지의 속성을 지정하는 데 사용됩니다. 이 예제에서는 null을 지정하여 기본값을 사용합니다.
- body: 전송할 메시지의 내용을 지정합니다. 이 예제에서는 콘솔에서 입력받은 문자열을 UTF-8 인코딩하여 사용합니다.
using RabbitMQ.Client;
using System.Text;
Console.WriteLine("RabbitMQ_Pub");
// Create a connection factory
ConnectionFactory factory = new ConnectionFactory();
factory.HostName = "192.168.70.33";
factory.UserName = "guest";
factory.Password = "guest";
// Connection server
var connection = factory.CreateConnection();
// Create a channel
var channel = connection.CreateModel();
channel.QueueDeclare("hello", false, false, false, null);
// Send Message
while (true)
{
string message = Console.ReadLine();
if(message.Equals("x"))
break;
channel.BasicPublish(
exchange: "",
routingKey: "hello",
basicProperties: null,
body: Encoding.UTF8.GetBytes(message));
Console.WriteLine("Send : {0}", message);
}
Console.ReadLine();
RabbitMQ-Consumer
- Consumer 등록 : EventingBasicConsumer 클래스의 인스턴스를 생성하여 RabbitMQ 브로커로부터 메시지를 비동기적으로 수신할 수 있도록 해주는 이벤트 핸들러를 제공합니다.
- Received : 메시지가 수신되면 호출되며, 수신된 메시지를 처리하는 코드를 포함합니다. 수신된 메시지의 바이트 배열을 문자열로 변환하고, 콘솔에 출력합니다.
- BasicConsume() : "hello" 큐의 메시지를 수신합니다.
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System.Text;
Console.WriteLine("RabbitMQ_Sub");
// Create a connection factory
ConnectionFactory factory = new ConnectionFactory();
factory.HostName = "192.168.70.33";
factory.UserName = "guest";
factory.Password = "guest";
var connection = factory.CreateConnection();
// Declare channel
var channel = connection.CreateModel();
channel.QueueDeclare("hello", false, false, false, null);
var consumer = new EventingBasicConsumer(channel);
// Receive message
consumer.Received += (model, ea) =>
{
var body = ea.Body.ToArray();
var message = Encoding.UTF8.GetString(body);
Console.WriteLine(" Receiv : {0}", message);
};
channel.BasicConsume(
queue: "hello",
autoAck: true,
consumer: consumer);
Console.ReadLine();
'프로그래밍 > RabbitMQ' 카테고리의 다른 글
[RabbitMQ] 메시지 송수신 - RoutingKey (0) | 2023.04.19 |
---|---|
[RabbitMQ] 메시지 송수신 - Publish/Subscribe (0) | 2023.04.19 |
[RabbitMQ] 파일 송수신 (이미지 송수신) (0) | 2023.03.30 |
[RabbitMQ] Docker이용하여 RabbitMQ 설치 - Linux (0) | 2023.03.29 |
[RabbitMQ] RabbitMQ 개념 (0) | 2023.03.29 |