프로그래밍 150

[RabbitMQ] 메시지 송수신 - RoutingKey

RabbitMQ 이전 게시물에서 Pub/Sub 메시지 송수신은, 메시지를 모든 Consumer에게 Broadcast하는 방법이였습니다. RabbitMQ에서 RoutingKey를 이용해서 특정 Queue에서만 메시지를 송수신 할 수 있습니다. 메시지 송신/수신 - RoutingKey RoutingKey를 이용하면 메시지를 필터링할 수 있습니다. 메시지는 바인딩 키가 일치하는 Queue로 송신합니다. RoutingKey를 이용하기 위한 Binding 기존에 사용하던 Exchange가 선언 된 경우 오류가 발생할 수 있습니다. Exchange를 삭제해줘야합니다. Exchange 설정 // Error 발생 시 Exchange 삭제 //channel.ExchangeDelete(exchangeName, true);..

[RabbitMQ] 메시지 송수신 - Publish/Subscribe

이전 포스팅 : 메시지 송신/수신 - WorkQueue RabbitMQ 메시지 송신/수신 - Publish/Subscribe Publisher가 생성된 2개의 Queue에 메시지를 송신하면, 각 Queue를 구독중인 2개의 Consumer는 동일한 메시지를 수신합니다. Exchange RabbitMQ의 핵심 아이디어는 Producer가 메시지를 Queue에 직접 보내지 않는다는 것입니다. Producer와 Consumer 중간에서 Exchange가 메시지를 수신하고, Queue에 메시지는 송신해줍니다. Exchange를 정의할 때 메시지를 어떻게 처리해야하는지 알아야합니다. Exchange의 메시지 처리 방식 4가지 direct topic headers fanout fanout 여기선 fanout방식에 ..

[RabbitMQ] 파일 송수신 (이미지 송수신)

이전 포스팅 [RabbitMQ] 메시지 송신/수신하기 사실, MessageQueue로 파일을 송/수신 하는것 자체가 목적에 맞지 않습니다. MessageBrocker는 말 그대로 Message만 송/수신 해야합니다. 이번 게시물에서 사이즈가 큰 파일을 메시지에 담아 송/수신 하는 방법을 확인하고, 사이즈가 큰 파일을 메시지에 담아 보낼 때, FTP와 비교하여 속도가 얼마나 차이가 나는지 테스트해봤습니다. 파일 송/수신 publisher msg 송신 시 Byte로 변환 후 message body에 담아 송신합니다. string ImagePath = @"C:\Users\Desktop\testfile\test.tif"; byte[] imageArray = File.ReadAllBytes(ImagePath); ..

[RabbitMQ] 메시지 송수신 - Helloworld

메시지 송/수신 RabbitMQ Publisher, RabbitMQ Consumer 2개 솔루션 생성해야합니다. Publisher : 메시지 발행 Consumer : 메시지 수신 RabbitMQ.Client nugetpackage 설치합니다. v6.5.0 RabbitMQ-Publisher ConnectionFactory 클래스의 인스턴스 생성 : RabbitMQ 서버 접속을 위한 로그인 정보를 설정합니다. QueueDeclare 메소드를 사용하여 "hello"라는 큐를 선언합니다. BasicPublish 메소드를 사용하여 메시지를 전송합니다. exchange: 브로커에서 사용하는 exchange를 지정합니다. 여기에서는 빈 문자열을 지정하여 디폴트 exchange를 사용합니다. routingKey: 전송..

[RabbitMQ] Docker이용하여 RabbitMQ 설치 - Linux

Docker이용한 RabbitMQ 설치 - Linux Ubuntu 16.04서버에서 Docker를 활용해서 RabbitMQ 환경을 구축합니다.RabbitMQ DockerHub https://hub.docker.com/_/rabbitmq Docker Image 다운로드 docker login docker pull rabbitmq:3-management (= v3.11) 관리 기능이 있는 RabbitMQ 이미지를 사용하려면 rabbitmq:3-management 태그를 사용해야합니다. 이 경우 웹 브라우저에서 http://localhost:15672 이동하여 RabbitMQ 관리 UI에 액세스 할 수 있습니다. docker images 확인 administrator@TEST:~$ docker images R..

[RabbitMQ] RabbitMQ 개념

RabbitMQ RabbitMQ는 오픈소스 메시지 브로커 이다. 메시지 브로커는 애플리케이션, 시스템 및 서비스 등.. 서로 간에 통신하고 정보를 교환할 수 있도록 해주는 소프트웨어 RabbitMQ 주체 3가지 Producer : Msg를 송신 함 Consumer : Msg를 수신 함 Broker : Producer와 Consumer 중간에서 Msg를 전달 함 기본 개념 AMQP(Advanced Message Queuing Protocol) : 시스템 간 메시지를 교환하기 위해 공개 표준으로 정의한 프로토콜 Broker : 발행자가 만든 메시지를 저장 Virtual host : Broker 내의 가상 영역 Connection : 발생자와 소비자, Broker 사이의 물리적인 연결 Channel : 발행자..

[Docker] Docker Compose

일반적인 시스템은 단일 애플리케이션으로 구동이 되지 않습니다. 여러 개의 애플리케이션이 서로 의존성 있게 구성되어 시스템이 이뤄져 있습니다. 그렇다면 흔히 하나의 컨테이너가 하나의 애플리케이션을 담당한다고 하면 여러 개의 컨테이너가 필요로 합니다. 이때 필요한 기술이 도커 컴포즈(Docker Compose)입니다. 도커 컴포즈는 yaml 포맷으로 작성되며 여러 개의 컨테이너의 실행을 한 번에 관리를 할 수 있게 해 줍니다. 그런 다음 단일 명령으로 구성에서 모든 서비스를 생성하고 시작할 수 있습니다. 도커 컴포즈는 모든 환경(생산, 스테이징, 개발, 테스트 및 CI 워크플로우)에서 작동합니다.

[C#] Transaction

Transaction Transaction은 데이터베이스 작업 중에 실행되는 일련의 작업을 의미합니다. 일반적으로 트랜잭션은 "모두 실행" 또는 "모두 취소"와 같은 두 가지 결과 중 하나를 가져옵니다. 이를 통해 데이터베이스 작업 중간에 문제가 발생하면 이전 상태로 롤백할 수 있습니다. TransactionScope 클래스 C#에서 TransactionScope 클래스 사용 예시를 확인해봅시다. TransactionScope 클래스는 .NET 프레임워크에서 제공하는 트랜잭션 관리 기능을 제공합니다. 이 클래스는 여러 데이터 소스를 사용하는 트랜잭션 처리를 위해 사용할 수 있습니다. TransactionScope 클래스를 사용하면 여러 데이터 소스에서 실행되는 작업을 하나의 트랜잭션으로 묶을 수 있습니다..

프로그래밍/C# 2023.03.29