Rabbitmq

[ Rabbitmq ] Rabbitmq 통신: c# 과 파이썬 이용해서 rabbitmq publish , consume

code094 2022. 9. 4. 12:30

c# easynetq : publish  ,  python pika : consume

 

1. pika consume 

credentials = pika.PlainCredentials('id','pw')
# create connection 
connection = pika.BlockingConnection(
    pika.ConnectionParameters(host=ip, virtual_host='/', credentials=credentials))
# create channel 
channel = connection.channel()

# declare queue 
result = channel.queue_declare(queue='MqttTestQueue', exclusive=True)
queue_name = result.method.queue
channel.queue_bind(exchange='ExchangeTest',queue=queue_name, routing_key='RoutingTest')
channel.basic_consume(
    queue=queue_name, on_message_callback=callback, auto_ack=True)
 
# start Consumne 
channel.start_consuming()
def callback(self, channel, method, properties, body):
        try:
            ...
        except Exception as ex:
            print('rabbit_mq_callback erorr : {ex}')

 

2. c# publish

public class RandomTest
    {
        public int First { get; set; }
        public int Second { get; set; }
    }
    class MainTest
    {
        Random rd = new Random();

        IBus bus = null;
        IExchange exchange = null;

        public MainTest()
        {
            bus = RabbitHutch.CreateBus("host=localhost");
            exchange = bus.Advanced.ExchangeDeclare("ExchangeTest", "fanout");

            MattTest();
        }
        public void MattTest()
        {          
            int rand1 = rd.Next(5000);
            int rand2 = rd.Next(5000);

            var message = new Message<RandomTest>(new RandomTest
            {
                First = rand1,
                Second = rand2
            });

            bus.Advanced.Publish<RandomTest>(exchange, "RoutingTest", false, message);

            Thread.Sleep(1000);
        }
    }

publish 는 간단한 반복문을 사용해서 1초마다 계속해서 데이터를 보내게 했고, 

consume 은 데이터가 오길 기다리다가 데이터가 오면 해당 데이터를 출력.