PubNub에서 RabbitMQ로 이벤트를 스트리밍하는 방법
Tags: rabbitmq, messagebroker, pubnub, pubnubeventsactions
Published: 2024-03-07 15:59:06

PubNub 이벤트 및 액션 소개
------------------

PubNub 이벤트 및 액션은 메시지를 게시하고 이러한 이벤트를 타사 에코시스템으로 보내는 것과 같은 특정 PubNub 이벤트를 캡처할 수 있는 PubNub 서비스입니다. 웹훅 연결 또는 AWS와 같은 클라우드 서비스에 직접 연결하는 등 PubNub 액션으로 정의되는 이러한 에코시스템으로 PubNub 이벤트를 전송하는 것을 지원하며, 곧 더 많은 기능이 추가될 예정입니다. 이제 코딩 없이도 관리자 포털에서 모든 것을 구성할 수 있습니다.

  
자세한 내용은 [문서](https://www.pubnub.com/docs/serverless/events-and-actions/overview) 를 참조하여 PubNub 이벤트 및 액션을 시작하는 방법에 대해 자세히 알아보세요. 또한 이벤트 및 액션 설정에 대한 [이벤트 및 액션 설정하기](https://www.pubnub.com/how-to/set-up-events-and-actions/)에서 이벤트 리스너와 액션을 만드는 기본 사항을 다룹니다. 또한 이벤트 리스너와 액션을 만드는 기본 사항을 다루는 [JSONPath를 사용하여 메시지 필터링하기](https://www.pubnub.com/how-to/eanda-advanced-jsonpath-filter/) 를 사용하여 메시지를 필터링하는 방법에 대한 자세한 내용도 참조하세요.

AMQP란 무엇인가요?
------------

[고급 메시지 큐 프로토콜](https://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol) (AMQP)는 클라이언트 애플리케이션이 확장 가능하고 안전한 API를 통해 메시징 미들웨어 브로커와 통신할 수 있도록 하는 메시징 프로토콜입니다. 2003년에 John O'Hara가 [JP모건 체이스](https://www.jpmorganchase.com/) 에서 시작된 AMQP는 IoT 데이터 스트리밍 및 백엔드 서비스 통합을 포함한 복잡한 메시징 솔루션을 지원합니다. 2005년 중반까지 AMQP 사용자 그룹을 구성하려는 노력에 다음과 같은 거대 IT 기업이 참여했습니다. [Cisco](https://www.cisco.com/), [Red Hat](https://www.redhat.com/), 그리고 [아이오나 테크놀로지스](https://en.wikipedia.org/wiki/IONA_Technologies)는 게시/구독 메시징 패턴의 중요성을 강조합니다.

### 브로커와 브로커의 역할

메시징 브로커는 다음으로부터 메시지를 수신합니다. [퍼블리셔](https://www.rabbitmq.com/docs/publishers) (메시지를 게시하는 애플리케이션, 생산자라고도 함)로부터 메시지를 수신하여 [소비자](https://www.rabbitmq.com/docs/consumers) (메시지를 처리하는 애플리케이션)로 라우팅합니다.

네트워크 프로토콜이기 때문에 퍼블리셔, 소비자, 브로커는 모두 서로 다른 시스템에 존재할 수 있습니다.

RabbitMQ란?
----------

[RabbitMQ](https://www.pubnub.com/guides/rabbitmq/) 는 오픈소스 메시징 대기열 소프트웨어로 알려진 [메시지 브로커](https://en.wikipedia.org/wiki/Message_broker) 또는 큐 관리자로 알려진 오픈소스 메시징 대기열 소프트웨어입니다. RabbitMQ는 다음을 구현합니다. [AMQP 0.9.1](https://www.rabbitmq.com/tutorials/amqp-concepts) 을 구현하여 전체 메시지 큐 프로세스를 제어하는 일련의 표준을 기반으로 합니다. AMQP 0.9.1은 2008년 11월에 발표되었으며, 이 튜토리얼에서 사용된 버전이기도 합니다. 간단히 말해, 메시지 전송을 위해 애플리케이션이 연결할 대기열을 정의하는 소프트웨어입니다.

메시지에는 모든 종류의 정보가 포함될 수 있습니다. 예를 들어 다른 애플리케이션(다른 서버에 있을 수도 있음)에서 시작해야 하는 프로세스나 작업에 대한 정보가 포함될 수도 있고, 단순한 문자 메시지일 수도 있습니다. 대기열 관리자 소프트웨어는 수신 애플리케이션이 연결하여 대기열에서 메시지를 가져올 때까지 메시지를 저장합니다. 그러면 수신 애플리케이션이 메시지를 처리합니다.

메시지 브로커는 다양한 서비스(예: 웹 애플리케이션)의 중개자 역할을 합니다. 일반적으로 많은 시간이나 리소스가 소요되는 작업을 위임하여 웹 애플리케이션 서버의 워크로드와 전송 시간을 줄일 수 있습니다.

RabbitMQ(AMQP) PubNub 액션 생성하기
-----------------------------

PubNub 이벤트를 RabbitMQ에 연결하면 실시간 메시징과 효율적인 메시지 큐를 결합할 수 있습니다. 이 연결을 통해 확장 가능한 메시지 처리와 독점 데이터 생성이 가능하여 정보 흐름에 대한 완전한 소유권과 제어를 보장합니다.

### 사전 요구 사항

PubNub 계정에 가입되어 있는지 확인하고 다음을 확인하세요. [이벤트 및 액션 가격](https://www.pubnub.com/docs/general/resources/events-and-actions-pricing) 페이지에서 비용 세부 정보를 확인하세요. 또한 Pubnub 관리자 포털에서 이벤트 및 작업으로 이동하여 "업그레이드"를 선택하여 이벤트 및 작업의 요금제를 확인할 수 있습니다. 이 방법에서는 PubNub 디버그 콘솔을 사용하여 메시지를 게시하고 RabbitMQ 인스턴스 내에서 해당 메시지의 처리를 확인하겠습니다.

### RabbitMQ 인스턴스 설정하기

AWS 내에서 다음을 사용하여 RabbitMQ 인스턴스를 설정하겠습니다. [Amazon MQ](https://aws.amazon.com/amazon-mq/)를 사용하여 브로커를 설정할 수 있습니다. 메시지 브로커, 더 구체적으로는 Docker 컨테이너 내에서 RabbitMQ 이미지를 실행하고 EC2 인스턴스를 사용하여 호스팅하는 등 여러 가지 방법으로 RabbitMQ 브로커를 호스팅할 수 있습니다. 하지만 이 방법에서는 Amazon MQ를 사용하겠습니다.

Amazon MQ 내에서 RabbitMQ 인스턴스를 생성하려면 다음 단계를 따르세요:

1.  다음에 로그인합니다. [아마존 웹 서비스](https://aws.amazon.com/) (AWS)에 로그인합니다.
    
2.  검색창에서 "Amazon MQ"를 검색하고 Amazon MQ 서비스를 클릭합니다.
    
3.  "브로커 생성" 버튼을 클릭하여 브로커를 구성합니다.
    
4.  "브로커 엔진 유형"에서 "Rabbit MQ"를 선택합니다.
    
5.  배포 모드를 선택합니다(애플리케이션의 사용 사례에 따라 다름).
    
6.  여러 가용성 영역이 필요하지 않으므로 "단일 인스턴스 브로커"를 선택합니다.
    
7.  브로커 이름(예: "rabbit-1")을 입력합니다.
    
8.  RabbitMQ 액세스 아래에서 RabbitMQ 관리 콘솔의 사용자 이름과 비밀번호를 입력합니다. 이 비밀번호는 나중에 RabbitMQ 인스턴스에 로그인할 때 사용합니다.
    
9.  사용자 이름과 비밀번호는 다시 볼 수 없으므로 기억해 두세요.
    
10.  "브로커 생성"을 선택합니다. 브로커를 생성하는 데 약 20분이 소요됩니다.
    

이 단계를 수행한 후 Amazon 웹 포털은 다음과 같이 보일 것입니다:

![](https://www.pubnub.com/cdn/3prze68gbwl1/47gUB6rXW9RRx1uIfNDyG/981a07e2000cf3ba053ac1658408ba83/Screenshot_2024-02-28_at_12.46.13_AM.png)

이제 메시지 브로커가 PubNub 이벤트 처리를 시작하도록 설정되었습니다. 이제 RabbitMQ 인스턴스를 PubNub 이벤트 및 액션에 연결하기만 하면 됩니다.

### PubNub 이벤트 리스너 설정하기

특정 PubNub 이벤트를 수신하고 필요한 경우 PubNub 이벤트를 필터링할 수 있도록 PubNub 이벤트 리스너를 설정하겠습니다. 이벤트 리스너는 특정 조건 집합이 사전 정의된 작업을 트리거할 때까지 기다렸다가 PubNub 메시지를 RabbitMQ 인스턴스로 전송하는 등의 작업을 수행합니다. PubNub 이벤트 필터링에 대한 자세한 내용은 다음을 확인하세요. [문서](https://www.pubnub.com/docs/serverless/events-and-actions/events#advanced-json-path).

이벤트 리스너를 생성하려면 다음 단계를 따르세요:

1.  에 로그인합니다. [관리자 포털](https://admin.pubnub.com/).
    
2.  포털 왼쪽에 있는 이벤트 및 작업 탭을 클릭합니다.
    
3.  팝업 대화 상자에 따라 애플리케이션 중 하나를 선택합니다.
    
4.  팝업 대화 상자에 따라 키 세트를 선택합니다.
    
5.  " + 이벤트 리스너" 버튼을 클릭합니다.
    
6.  이벤트 소스를 선택합니다. 이 사용법에서는 "메시지"를 선택합니다.
    
7.  "이벤트 프로듀서"에서 "게시/서브"를 선택합니다.
    
8.  "이벤트 유형"에서 "메시지 전송"을 선택합니다.
    
9.  이 방법의 필터 유형은 "필터 없음"을 선택합니다.
    
10.  예를 들어 연필 아이콘을 클릭하여 이벤트 수신자의 이름을 지정합니다: "Rabbit-1 수신자"라고 합니다.
    
11.  화면 오른쪽 하단의 "변경사항 저장"을 클릭합니다.
    

이 단계를 수행한 후 PubNub 포털의 이벤트는 다음과 같이 보일 것입니다:

![](https://www.pubnub.com/cdn/3prze68gbwl1/1N2ktJi5nfhV5cwzbxsV9w/bacc1ee24c33c884a7e20d552edac22f/Screenshot_2024-02-28_at_1.07.07_AM.png)

### Rabbit MQ에 PubNub 액션 설정하기

이제 PubNub 포털에서 Rabbit MQ 액션을 설정하겠습니다:

1.  "이벤트 및 액션" 탭으로 돌아가서 "+ 액션 추가"를 선택합니다.
    
2.  액션 유형에서 "AMQP"를 선택합니다.
    
3.  "이벤트 리스너 추가" 드롭다운을 선택하고 위에서 생성한 이벤트 리스너를 선택합니다. 이 경우 "Rabbit-1 리스너"를 선택합니다.
    

이제 RabbitMQ 인스턴스에 대한 AMQP URL을 가져와야 합니다. 먼저, AMQP URL의 형식은 다음과 같습니다:

a**_mqps://_**username:password@host.name:port

여기에는 RabbitMQ 인스턴스에 할당된 사용자 이름과 비밀번호가 사용되어 PubNub가 인스턴스로 메시지를 보낼 수 있습니다. 제 경우에는 URL이 다음과 같이 정의됩니다:  
  
a**_mqps://_**username:password@b-d7d2f067-c7be-45a9-8c20-de79a3c309d0.mq.us-west-2.amazonaws.com:5671

Amazon MQ 내에서 Rabbit MQ 인스턴스로 이동하여 호스트 이름을 찾을 수 있습니다.

1.  인스턴스를 선택합니다. 지금까지 따라왔다면 "rabbit-1" 인스턴스를 선택합니다.
    
2.  아래로 스크롤합니다. '연결' 및 '엔드포인트' 아래에서 호스트 이름과 포트를 복사합니다.
    

이 경우 호스트 이름은

[**_b-d7d2f067-c7be-45a9-8c20-de79a3c309d0.mq.us-west-2.amazonaws.com_**](mailto:password@b-d7d2f067-c7be-45a9-8c20-de79a3c309d0.mq.us-west-2.amazonaws.com)**_:5671_**

![](https://www.pubnub.com/cdn/3prze68gbwl1/5DCfgqND97DuWM4gzXfgHq/c9dec4de19377075134e24296d2d3f20/image3.png)

지금까지의 작업은 다음과 같아야 합니다. 그러나 키를 생성하고 교환 및 라우팅해야 합니다. 이렇게 하려면 아래 단계를 따르세요:

1.  Amazon MQ "rabbit-1" 인스턴스로 다시 이동합니다.
    
2.  연결까지 아래로 스크롤하여 RabbitMQ 웹 콘솔 링크를 클릭합니다. 그러면 RabbitMQ 관리 콘솔로 이동합니다.
    
3.  다음과 같은 웹 페이지가 표시됩니다:
    

![](https://www.pubnub.com/cdn/3prze68gbwl1/5lZkMMdAqoXR5tffYI8Kdj/cd4db2aa907098f0007b2ebdc95492f7/Image_4.png)

RabbitMQ 인스턴스를 만들 때 앞서 정의한 사용자 이름과 비밀번호를 입력합니다. RabbitMQ 관리 콘솔에 로그인하면 대기열이 생성됩니다. 아래 단계에 따라 라우팅 키를 받습니다:

1.  관리 콘솔에 로그인한 후 "대기열" 탭으로 이동합니다.
    
2.  "새 대기열 추가" 드롭다운을 선택합니다.
    
3.  대기열에 이름을 지정합니다. 이 이름이 라우팅 키가 됩니다.
    
4.  "대기열 추가"를 선택합니다.
    

이제 관리 콘솔이 다음과 같이 보일 것입니다:

![](https://www.pubnub.com/cdn/3prze68gbwl1/6m5GFhKxpJ8RxwmcdRNDBG/c07eb1055de0508a5eb1e5815425d5dd/GDhoAIVsr_Ll6U-BoBas09ZExbUj1lvt8sLYsNZqxU3QI2EPyFvtcFDoRJvP2D2l3l3FrJmbXU_bFitsH_9P7zalf8ptcgDIdF43W_jyRijw_t_WLfcEj0m_Z4r0.png)

이제 대기열에 대한 교환을 만들겠습니다. 교환은 메시지가 전송되는 곳입니다. 교환은 메시지를 받아 0개 이상의 대기열로 라우팅합니다. 라우팅 알고리즘은 교환 유형과 바인딩이라는 규칙에 따라 달라집니다. 교환을 만들어 보겠습니다.

1.  "교환" 탭으로 이동합니다.
    
2.  "amqp.direct" 교환을 선택합니다.
    
3.  "바인딩" 드롭다운을 선택합니다. 여기에서 거래소를 대기열에 바인딩할 것입니다.
    
4.  "대기열로" 탭에 대기열의 이름인 "게시자"를 입력합니다.
    
5.  라우팅 키는 원하는 대로 사용할 수 있습니다. 저는 "amqp.publisher"를 사용했습니다.
    

이제 RabbitMQ 콘솔 설정에 마이크로서비스 아키텍처에서 실시간 데이터 및 알림을 처리하도록 맞춤화된 교환 및 라우팅 키 구성이 반영되어 있을 것입니다.

![](https://www.pubnub.com/cdn/3prze68gbwl1/5JwFENUlYKvwz4yb3gOF4w/b6af0191a23d10aad0eaa912159642ca/Image_6.png)

라우팅 키의 이름을 복사하고 PubNub 작업의 필수 필드에 교환을 매립합니다:

![](https://www.pubnub.com/cdn/3prze68gbwl1/5rOmc38fBgMHrDJnw5Fohb/49d67601ff3925d1730fd0f29457bd52/Image_7.png)

PubNub E&A와 RabbitMQ 통합 테스트하기
-----------------------------

PubNub 디버그 콘솔을 사용하여 연동을 테스트할 수 있습니다. PubNub 관리자 포털로 이동하여 왼쪽에서 "디버그 콘솔"을 선택합니다. 이벤트 리스너에는 필터가 없으므로 채널에 메시지를 게시할 때마다 작업이 실행되고 PubNub 메시지가 전송되어 RabbitMQ 인스턴스에서 처리되어야 합니다. 메시지를 입력하고 어느 클라이언트에서든 "보내기"를 누르기만 하면 됩니다. 이제 RabbitMQ 인스턴스가 이 메시지를 수신했는지 확인합니다.

![](https://www.pubnub.com/cdn/3prze68gbwl1/7gEpCaLvIUqGnSSOFwyqw3/3a48565674d0fd9048f3cd874c9b72f0/Image_8.png)

메시지를 게시하고 나면, RabbitMQ 관리 콘솔의 "게시자" 대기열에 메시지가 표시되어 효율적인 메시지 처리량과 실시간 메시징 시스템의 견고함을 확인할 수 있을 것입니다. RabbitMQ 콘솔 내부에 다음과 같이 메시지가 표시되어야 합니다.

![](https://www.pubnub.com/cdn/3prze68gbwl1/4EMqQ7mmU1wk8zMli69YYB/1e3e12292fffc203e2f32678512c5d12/Image_9.png)

이 경우 7개의 메시지를 게시했으며, 모두 처리 대기열에 대기 중입니다.

다음 단계
-----

이 튜토리얼에서는 높은 메시지 전송 처리량을 보장하는 반응형 메시징 시스템을 개발하기 위해 PubNub 이벤트 및 작업과 호스팅된 RabbitMQ 인스턴스를 설정하는 단계에 대해 설명했습니다. 웹 서버에 연결된 데이터에 PubNub이 제공하는 실시간 상호작용을 통해 일부 작업을 정의하는 등 자체적으로 PubNub 메시지를 처리하고자 하는 사용 사례는 많습니다. 예를 들어 [PubNub Unity SDK](https://www.pubnub.com/docs/sdks/unity)를 활용하면 멀티플레이어 게임에서 사용자 행동을 실시간으로 처리하여 매치메이킹, 실시간 게임 상태 업데이트, 리더보드, 게임 내 채팅에 사용할 수 있어 더욱 인터랙티브한 게임 경험을 제공할 수 있습니다. 이 외에도 웹 앱의 사용 사례는 다양하므로 유니티의 [자바스크립트](https://www.pubnub.com/docs/sdks/javascript) 또는 [자바 SDK](https://www.pubnub.com/docs/sdks/java).

이 문서에서는 PubNub E&A로 설정할 수 있는 PubNub 액션 중 하나에 대해 설명했지만, 다음과 같은 더 많은 것들이 있습니다:

-   [웹훅 호출하기](https://www.pubnub.com/docs/serverless/events-and-actions/actions/create-webhook-action) (즉, 필터링된 각 이벤트에 대해 서버 호출)
    
-   [SQS에 저장](https://www.pubnub.com/docs/serverless/events-and-actions/actions/create-sqs-action) (즉, 각 이벤트를 [아마존의 SQS 큐잉 서비스](https://aws.amazon.com/sqs/))
    
-   [키네시스로 보내기](https://www.pubnub.com/docs/serverless/events-and-actions/actions/create-kinesis-action) (즉, 다음 주소로 보내기 [아마존의 이벤트 수집 서비스](https://aws.amazon.com/kinesis/))
    
-   [S3로 보내기](https://www.pubnub.com/docs/serverless/events-and-actions/actions/create-s3-action) (즉, 데이터를 아마존의 [Amazon S3 버킷](https://aws.amazon.com/s3/))
    
-   [카프카로 보내기](https://www.pubnub.com/docs/serverless/events-and-actions/actions/create-kafka-action) (즉, 데이터를 [아파치 카프카](https://kafka.apache.org/))
    
-   [IFTTT 작업 생성](https://www.pubnub.com/docs/serverless/events-and-actions/actions/create-ifttt-action) (즉, 다음으로 보내기 [If This Then That](https://ifttt.com/))
    

궁금한 점이 있으면 언제든지 개발자 지원팀(devrel@pubnub.com)으로 문의하세요.

#### 내용

[PubNub 이벤트 및 액션](#h-0)[소개AMQP란](#h-1)[무엇인가브로커와 그 역할](#h-2)[RabbitMQ란](#h-3) 무엇인가 RabbitMQ[(AMQP) PubNub](#h-4)[액션](#h-5)[생성전제](#h-4) 조건[RabbitMQ 인스턴스 설정](#h-6)[하기](#h-4)[PubNub 이벤트 리스너](#h-7) 설정하기[RabbitMQ에 PubNub 액션](#h-8)[설정하기](#h-7) PubNub[E&A와 RabbitMQ 통합](#h-9)[테스트하기다음](#h-10) 단계는 무엇인가요?

PubNub이 어떻게 도움이 되나요?
====================

이 문서는 원래 [PubNub.com에](https://www.pubnub.com/how-to/stream-events-from-pubnub-to-rabbitmq/) 게시되었습니다.

저희 플랫폼은 개발자가 웹 앱, 모바일 앱 및 IoT 디바이스를 위한 실시간 인터랙티브를 구축, 제공 및 관리할 수 있도록 지원합니다.

저희 플랫폼의 기반은 업계에서 가장 크고 확장성이 뛰어난 실시간 에지 메시징 네트워크입니다. 전 세계 15개 이상의 PoP가 월간 8억 명의 활성 사용자를 지원하고 99.999%의 안정성을 제공하므로 중단, 동시 접속자 수 제한 또는 트래픽 폭증으로 인한 지연 문제를 걱정할 필요가 없습니다.

PubNub 체험하기
-----------

[라이브 투어를](https://www.pubnub.com/tour/introduction/) 통해 5분 이내에 모든 PubNub 기반 앱의 필수 개념을 이해하세요.

설정하기
----

PubNub [계정에](https://admin.pubnub.com/signup/) 가입하여 PubNub 키에 무료로 즉시 액세스하세요.

시작하기
----

사용 사례나 [SDK에](https://www.pubnub.com/docs) 관계없이 [PubNub 문서를](https://www.pubnub.com/docs) 통해 바로 시작하고 실행할 수 있습니다.