Python STOMP를 사용하여 ActiveMQ에 연결

ActiveMQ은 여러 애플리케이션 간에 메시지를 전송하는 데 사용되는 오픈 소스 메시지 지향 미들웨어입니다. 메시지를 보관하고 수신자가 사용 가능한 경우에만 전송되는 대기열로 구성되므로 서버가 다운되어도 메시지가 손실되지 않으므로 안심할 수 있습니다. 응용 프로그램은 완전히 다르고 이기종 플랫폼에서 호스팅될 수 있으며 ActiveMQ는 이러한 시스템 간의 통신에도 사용할 수 있습니다.

예를 들어, 마이크로서비스 아키텍처로 구축되고 서로 다른 프로그래밍 언어로 작성된 대규모 애플리케이션은 통신이 자주 이루어지지만 오프라인 서비스가 메시지 손실을 일으키지 않아야 합니다.

ActiveMQ의 작동:
ActiveMQ에는 두 개의 엔드포인트가 있습니다.
  • 생산자 – 메시지 브로커에게 메시지를 보내는 사람.
  • 소비자 – 이 메시지를 한 번에 하나씩 읽는 소비자.

  • ActiveMQ는 큐 또는 토픽의 형태로 메시지를 저장합니다.

  • 대기열: 메시지가 단일 소비자에게 전송되고 소비자가 사용할 수 없는 경우 소비자가 메시지를 수신할 수 있을 때까지 activemq에 의해 보류됩니다.

  • 주제: 특정 주제에 관심이 있는 모든 구독자에게 메시지 사본이 전송됩니다. 사용할 수 없는 소비자는 과거 메시지를 받지 않습니다.

  • 이제 이 소비자 코드를 만들고 Python에서 ActiveMQ 주제를 구독하는 방법을 살펴보겠습니다.
    Python은 STOMP 프로토콜을 사용하여 모든 유형의 메시지 브로커와 연결하기 위해 stomp.py라는 클라이언트 라이브러리를 제공합니다.

    1단계: 사용 가능한 최신 버전의 스톰프를 설치합니다.pip install stomp.py
    2단계: 소비자 스크립트.

    import stomp
    #Establish a connection
    con = stomp.StompConnection([(Host,port)])
    #listener class to be instantiated.
    listener = MsgListener()
    con.set_listener(name_of_listener, listener)
    #wait will ensure it waits till connection is established and acknowledged.
    con.connect(usernanme, password, wait=True)
    #subscribe to a particular topic or queue by giving the path and headers if required by the server.
    con.subscribe(topic/path, headers={})
    


    3단계: 처리를 위한 리스너 클래스.

    Class MsgListener(stomp.ConnectionListener):
        def __init__(self):
            # to keep the count of messages received
            self.msg_recieved = 0 
    
        def on_error(self, message):
            logger.error(received an error %s”’ %message)
    
        def on_message(self, message):
            message = json.loads(message)
            self.msg_received +=1
            # add your logic based on the message received here
    

    con.subscribe가 주제에 대해 수행되는 경우 게시된 메시지는 메시지가 게시된 시점에 활성 구독이 있는 모든 구독자에게 전달됩니다.
    반면에 대기열인 경우 한 명의 소비자만 하나의 메시지를 받습니다. 메시지는 사용 가능한 소비자 간에 로드 밸런싱됩니다.

    좋은 웹페이지 즐겨찾기