AMQ Ruby Client 사용

Red Hat AMQ Clients 2.11

AMQ Clients 2.11과 함께 사용

초록

이 가이드에서는 클라이언트를 설치 및 구성하고, 실습 예제를 실행하고, 다른 AMQ 구성 요소와 함께 클라이언트를 사용하는 방법을 설명합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.

1장. 개요

AMQ Ruby는 메시징 애플리케이션을 개발하기 위한 라이브러리입니다. AMQP 메시지를 보내고 수신하는 Ruby 애플리케이션을 작성할 수 있습니다.

중요

AMQ Ruby 클라이언트는 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 https://access.redhat.com/support/offerings/techpreview/를 참조하십시오.

AMQ Ruby는 여러 언어 및 플랫폼을 지원하는 메시징 라이브러리 제품군인 AMQ Clients의 일부입니다. 클라이언트 개요는 AMQ Clients 개요 를 참조하십시오. 이 릴리스에 대한 자세한 내용은 AMQ Clients 2.11 릴리스 노트 를 참조하십시오.

AMQ Ruby는 Apache Cryostat의 Proton API를 기반으로 합니다. 자세한 API 문서는 AMQ Ruby API 참조를 참조하십시오.

1.1. 주요 기능

  • 기존 애플리케이션과의 통합을 간소화하는 이벤트 중심 API
  • 보안 통신을 위한 SSL/TLS
  • 유연한 SASL 인증
  • 자동 재연결 및 페일오버
  • AMQP와 언어 네이티브 데이터 유형 간의 원활한 변환
  • AMQP 1.0의 모든 기능 및 기능에 액세스

1.2. 지원되는 표준 및 프로토콜

AMQ Ruby는 다음과 같은 업계가 인정하는 표준 및 네트워크 프로토콜을 지원합니다.

1.3. 지원되는 구성

AMQ Ruby 지원 구성에 대한 최신 정보는 Red Hat 고객 포털에서 Red Hat AMQ 지원 구성을 참조하십시오.

1.4. 용어 및 개념

이 섹션에서는 핵심 API 엔티티를 소개하고 함께 작동하는 방법을 설명합니다.

표 1.1. API 용어

엔터티설명

컨테이너

최상위 연결 컨테이너입니다.

연결

네트워크에서 두 피어 간 통신을 위한 채널입니다. 세션이 포함되어 있습니다.

세션

메시지를 보내고 받기 위한 컨텍스트입니다. 보낸 사람 및 수신자가 포함되어 있습니다.

보낸 사람

대상에 메시지를 전송하는 채널입니다. 대상도 있습니다.

수신자

소스에서 메시지를 수신하는 채널입니다. 소스가 있습니다.

소스

메시지의 이름이 지정된 원본 지점입니다.

대상

메시지에 대해 이름이 지정된 대상입니다.

메시지

애플리케이션별 정보.

delivery

메시지 전송입니다.

AMQ Ruby는 메시지를 보내고 수신합니다. 보낸 사람 및 수신자 를 통해 연결된 피어 간에 메시지가 전송됩니다. 발신자와 수신자는 세션을 통해 설정됩니다. 세션은 연결을 통해 설정됩니다. 연결은 고유하게 식별된 두 컨테이너 간에 설정됩니다. 연결에는 여러 세션이 있을 수 있지만 종종 필요하지 않습니다. API를 사용하면 필요하지 않은 경우 세션을 무시할 수 있습니다.

전송 피어는 메시지를 보낼 보낸 사람을 만듭니다. 보낸 사람에는 원격 피어에서 큐 또는 주제를 식별하는 대상이 있습니다. 수신하는 피어는 메시지를 수신하기 위한 수신자를 생성합니다. 수신자에는 원격 피어에서 큐 또는 주제를 식별하는 소스가 있습니다.

메시지의 전송은 전달 이라고 합니다. 메시지는 헤더 및 주석과 같은 모든 메타데이터를 포함하여 전송된 내용입니다. 전송은 해당 콘텐츠의 전송과 관련된 프로토콜 교환입니다.

전송이 완료되었음을 나타내기 위해 송신자 또는 수신자가 이를 고정합니다. 다른 쪽이 정통되면 더 이상 그 전달에 대해 전달하지 않을 것입니다. 수신자는 메시지를 수락하거나 거부할지 여부를 나타낼 수도 있습니다.

1.5. 문서 규칙

sudo 명령

이 문서에서 sudo 는 root 권한이 필요한 모든 명령에 사용됩니다. 변경 사항이 전체 시스템에 영향을 줄 수 있으므로 sudo 를 사용할 때는 주의하십시오. sudo 에 대한 자세한 내용은 sudo 명령 사용을 참조하십시오.

파일 경로

이 문서에서 모든 파일 경로는 Linux, UNIX 및 유사한 운영 체제(예: /home/andrea)에 유효합니다. Microsoft Windows에서는 동등한 Windows 경로(예: C:\Users\andrea)를 사용해야 합니다.

변수 텍스트

이 문서에는 환경과 관련된 값으로 교체해야 하는 변수가 있는 코드 블록이 포함되어 있습니다. 변수 텍스트는 화살표 중괄호로 묶고 italic monospace로 스타일링됩니다. 예를 들어 다음 명령에서 < project-dir> 을 사용자 환경의 값으로 바꿉니다.

$ cd <project-dir>

2장. 설치

이 장에서는 환경에 AMQ Ruby를 설치하는 단계를 안내합니다.

2.1. 사전 요구 사항

  • AMQ Ruby를 사용하려면 환경에 Ruby를 설치해야 합니다.

2.2. Red Hat Enterprise Linux에 설치

프로세스

  1. subscription-manager 명령을 사용하여 필수 패키지 리포지토리를 등록합니다. 기본 릴리스 스트림의 경우 <version >을 2 로 교체하거나 장기 지원 릴리스 스트림에 대해 2.11 을 바꿉니다. 필요한 경우 &lt ;variant >을 Red Hat Enterprise Linux 변형의 값으로 바꿉니다(예: 서버 또는 워크스테이션).

    Red Hat Enterprise Linux 7

    $ sudo subscription-manager repos --enable=amq-clients-<version>-for-rhel-7-<variant>-rpms

    Red Hat Enterprise Linux 8

    $ sudo subscription-manager repos --enable=amq-clients-<version>-for-rhel-8-x86_64-rpms

  2. yum 명령을 사용하여 rubygem-qpid_protonrubygem-qpid_proton-doc 패키지를 설치합니다.

    $ sudo yum install rubygem-qpid_proton rubygem-qpid_proton-doc

패키지 사용에 대한 자세한 내용은 부록 B. Red Hat Enterprise Linux 패키지 사용 을 참조하십시오.

3장. 시작하기

이 장에서는 환경을 설정하고 간단한 메시징 프로그램을 실행하는 단계를 안내합니다.

3.1. 사전 요구 사항

  • 환경에 대한 설치 절차를 완료해야 합니다.
  • 인터페이스 localhost 및 포트 5672 에서 연결을 청취하는 AMQP 1.0 메시지 브로커가 있어야 합니다. 익명 액세스가 활성화되어 있어야 합니다. 자세한 내용은 브로커 시작을 참조하십시오.
  • 예제 라는 큐가 있어야 합니다. 자세한 내용은 큐 생성을 참조하십시오.

3.2. Hello World 실행

Hello World 예제에서는 브로커에 대한 연결을 생성하고 예제 큐에 인사말을 포함하는 메시지를 전송한 다음 다시 수신합니다. 성공하면 수신된 메시지를 콘솔에 출력합니다.

examples 디렉터리로 변경하고 helloworld.rb 예제를 실행합니다.

$ cd /usr/share/proton/examples/ruby/
$ ruby helloworld.rb amqp://127.0.0.1 examples
Hello World!

4장. 예

이 장에서는 예제 프로그램을 통해 AMQ Ruby를 사용하는 방법을 보여줍니다.

자세한 내용은 AMQ Ruby 예제 제품군 및 Cryostat Proton Ruby 예제 를 참조하십시오.

4.1. 메시지 전송

이 클라이언트 프로그램은 < connection-url >을 사용하여 서버에 연결하고, 대상 < address >에 대한 보낸 사람을 생성하고, < message-body >를 포함하는 메시지를 전송하고, 연결을 종료하고 종료합니다.

예: 메시지 전송

require 'qpid_proton'

class SendHandler < Qpid::Proton::MessagingHandler
  def initialize(conn_url, address, message_body)
    super()

    @conn_url = conn_url
    @address = address
    @message_body = message_body
  end

  def on_container_start(container)
    conn = container.connect(@conn_url)
    conn.open_sender(@address)
  end

  def on_sender_open(sender)
    puts "SEND: Opened sender for target address '#{sender.target.address}'\n"
  end

  def on_sendable(sender)
    message = Qpid::Proton::Message.new(@message_body)
    sender.send(message)

    puts "SEND: Sent message '#{message.body}'\n"

    sender.close
    sender.connection.close
  end
end

if ARGV.size == 3
  conn_url, address, message_body = ARGV
else
  abort "Usage: send.rb <connection-url> <address> <message-body>\n"
end

handler = SendHandler.new(conn_url, address, message_body)
container = Qpid::Proton::Container.new(handler)
container.run

예제 실행

예제 프로그램을 실행하려면 로컬 파일에 복사하고 ruby 명령을 사용하여 호출합니다. 자세한 내용은 3장. 시작하기의 내용을 참조하십시오.

$ ruby send.rb amqp://localhost queue1 hello

4.2. 메시지 수신

이 클라이언트 프로그램은 < connection-url >을 사용하여 서버에 연결하고, 소스 < address > 에 대한 수신자를 생성하고, 종료되거나 < count > 메시지에 도달할 때까지 메시지를 수신합니다.

예: 메시지 수신

require 'qpid_proton'

class ReceiveHandler < Qpid::Proton::MessagingHandler
  def initialize(conn_url, address, desired)
    super()

    @conn_url = conn_url
    @address = address

    @desired = desired
    @received = 0
  end

  def on_container_start(container)
    conn = container.connect(@conn_url)
    conn.open_receiver(@address)
  end

  def on_receiver_open(receiver)
    puts "RECEIVE: Opened receiver for source address '#{receiver.source.address}'\n"
  end

  def on_message(delivery, message)
    puts "RECEIVE: Received message '#{message.body}'\n"

    @received += 1

    if @received == @desired
      delivery.receiver.close
      delivery.receiver.connection.close
    end
  end
end

if ARGV.size > 1
  conn_url, address = ARGV[0..1]
else
  abort "Usage: receive.rb <connection-url> <address> [<message-count>]\n"
end

begin
  desired = Integer(ARGV[2])
rescue TypeError
  desired = 0
end

handler = ReceiveHandler.new(conn_url, address, desired)
container = Qpid::Proton::Container.new(handler)
container.run

예제 실행

예제 프로그램을 실행하려면 로컬 파일에 복사하고 ruby 명령을 사용하여 호출합니다. 자세한 내용은 3장. 시작하기의 내용을 참조하십시오.

$ ruby receive.rb amqp://localhost queue1

5장. 네트워크 연결

5.1. 연결 URL

연결 URL은 새 연결을 설정하는 데 사용되는 정보를 인코딩합니다.

연결 URL 구문

scheme://host[:port]

  • 스키마 - 암호화되지 않은 TCP의 경우 amqp 또는 SSL/TLS 암호화가 있는 TCP의 경우 amqps 입니다.
  • host - 원격 네트워크 호스트입니다. 값은 호스트 이름 또는 숫자 IP 주소일 수 있습니다. IPv6 주소는 대괄호로 묶어야 합니다.
  • 포트 - 원격 네트워크 포트입니다. 이 값은 선택 사항입니다. 기본값은 amqp 스키마의 경우 5672이고 amqps 체계의 경우 5671입니다.

연결 URL 예

amqps://example.com
amqps://example.net:56720
amqp://127.0.0.1
amqp://[::1]:2000

6장. 보낸 사람 및 수신자

클라이언트는 보낸 사람 및 수신자 링크를 사용하여 메시지를 전달하기 위한 채널을 나타냅니다. 보낸 사람 및 수신자는 단방향으로, 메시지 원본의 소스 끝과 메시지 대상에 대한 대상 끝을 사용합니다.

소스 및 대상은 종종 메시지 브로커의 대기열 또는 주제를 가리킵니다. 소스는 서브스크립션을 나타내는 데도 사용됩니다.

6.1. 필요에 따라 대기열 및 주제 생성

일부 메시지 서버는 온디맨드 대기열 및 주제 생성을 지원합니다. 발신자 또는 수신자가 연결되면 서버는 발신자 대상 주소 또는 수신자 소스 주소를 사용하여 주소와 일치하는 이름의 큐 또는 주제를 만듭니다.

일반적으로 메시지 서버는 기본적으로 큐(one-to-one 메시지 전달용) 또는 주제(일대다 메시지 전달용)를 생성합니다. 클라이언트는 소스 또는 대상에 대기열 또는 주제 기능을 설정하여 선호하는 항목을 나타낼 수 있습니다.

자세한 내용은 다음 예제를 참조하십시오.

6.2. Cryostat 서브스크립션 생성

Cryostat 서브스크립션은 메시지 수신자를 나타내는 원격 서버의 상태입니다. 일반적으로 메시지 수신자는 클라이언트가 닫을 때 삭제됩니다. 그러나 지속성 서브스크립션은 영구 서브스크립션이므로 클라이언트는 해당 서브스크립션에서 분리한 다음 나중에 다시 연결할 수 있습니다. 분리된 동안 수신된 모든 메시지는 클라이언트가 다시 연결할 때 사용할 수 있습니다.

Cryostat 서브스크립션은 클라이언트 컨테이너 ID와 수신자 이름을 결합하여 서브스크립션 ID를 형성하여 고유하게 식별됩니다. 서브스크립션을 복구하려면 안정적인 값이 있어야 합니다.

예제

6.3. 공유 서브스크립션 생성

공유 서브스크립션은 하나 이상의 메시지 수신자를 나타내는 원격 서버의 상태입니다. 공유되므로 여러 클라이언트가 동일한 메시지 스트림에서 사용할 수 있습니다.

클라이언트는 수신자 소스에서 공유 기능을 설정하여 공유 서브스크립션을 구성합니다.

공유 서브스크립션은 클라이언트 컨테이너 ID와 수신자 이름을 결합하여 서브스크립션 ID를 형성하여 고유하게 식별됩니다. 여러 클라이언트 프로세스에서 동일한 서브스크립션을 찾을 수 있도록 안정적인 값이 있어야 합니다. 글로벌 기능이 shared 외에도 설정된 경우 수신자 이름만으로는 서브스크립션을 식별하는 데 사용됩니다.

예제

7장. 로깅

7.1. 프로토콜 로깅 활성화

클라이언트는 AMQP 프로토콜 프레임을 콘솔에 기록할 수 있습니다. 이 데이터는 문제를 진단할 때 매우 중요합니다.

프로토콜 로깅을 활성화하려면 PN_TRACE_FRM 환경 변수를 1 로 설정합니다.

예: 프로토콜 로깅 활성화

$ export PN_TRACE_FRM=1
$ <your-client-program>

프로토콜 로깅을 비활성화하려면 PN_TRACE_FRM 환경 변수를 설정 해제합니다.

8장. 상호 운용성

이 장에서는 다른 AMQ 구성 요소와 함께 AMQ Ruby를 사용하는 방법에 대해 설명합니다. AMQ 구성 요소의 호환성 개요는 제품 소개 를 참조하십시오.

8.1. 다른 AMQP 클라이언트와 상호 작용

AMQP 메시지는 AMQP 유형 시스템을 사용하여 구성됩니다. 이러한 공통 형식은 다른 언어의 AMQP 클라이언트가 서로 상호 운용할 수 있는 이유 중 하나입니다.

메시지를 전송할 때 AMQ Ruby는 언어 네이티브 유형을 AMQP 인코딩 데이터로 자동으로 변환합니다. 메시지를 수신하면 역방향 변환이 수행됩니다.

참고

AMQP 유형에 대한 자세한 내용은 Apache Cryostat 프로젝트에서 유지 관리하는 대화형 유형 참조 에서 확인할 수 있습니다.

표 8.1. AMQP 유형

AMQP 유형설명

null

빈 값

부울

true 또는 false 값

char

단일 유니코드 문자

string

유니코드 문자 시퀀스

바이너리

바이트 시퀀스

byte

서명된 8비트 정수

short

서명된 16비트 정수

int

부호 있는 32비트 정수

long

부호 있는 64비트 정수

ubyte

서명되지 않은 8비트 정수

ushort

서명되지 않은 16비트 정수

uint

서명되지 않은 32비트 정수

ulong

서명되지 않은 64비트 정수

플로트

32비트 부동 소수점 숫자

double

64비트 부동 소수점 숫자

array

단일 형식의 값 시퀀스

list

변수 유형 값의 시퀀스

map

고유 키에서 값으로 매핑

UUID

범용 고유 식별자

기호

제한된 도메인에서 7비트 ASCII 문자열

timestamp

시간 내 절대 지점

표 8.2. 인코딩 전 및 디코딩 후 AMQ Ruby 유형

AMQP 유형인코딩 전 AMQ Ruby 유형디코딩 후 AMQ Ruby 유형

null

nil

nil

boolean

true, false

true, false

char

-

문자열

string

문자열

문자열

바이너리

-

문자열

byte

-

정수

short

-

정수

int

-

정수

long

정수

정수

ubyte

-

정수

ushort

-

정수

uint

-

정수

ulong

-

정수

플로트

-

플로트

double

플로트

플로트

array

-

array

list

array

array

map

hash

hash

기호

기호

기호

timestamp

날짜, 시간

시간

표 8.3. AMQ Ruby 및 기타 AMQ 클라이언트 유형 (1 중 2)

인코딩 전 AMQ Ruby 유형AMQ C++ 유형AMQ JavaScript 유형

nil

nullptr

null

true, false

bool

boolean

문자열

std::string

string

정수

int64_t

number

플로트

double

number

array

std::vector

array

hash

std::map

object

기호

proton::symbol

string

날짜, 시간

proton::timestamp

number

표 8.4. AMQ Ruby 및 기타 AMQ 클라이언트 유형 (2 of 2)

인코딩 전 AMQ Ruby 유형AMQ .NET 유형AMQ Python 유형

nil

null

없음

true, false

system.Boolean

bool

문자열

system.String

unicode

정수

System.Int64

long

플로트

system. Cryostat

플로트

array

Amqp.List

list

hash

Amqp.Map

dict

기호

Amqp.Symbol

str

날짜, 시간

System.DateTime

long

8.2. AMQ JMS와 상호 작용

AMQP는 JMS 메시징 모델에 대한 표준 매핑을 정의합니다. 이 섹션에서는 해당 매핑의 다양한 측면에 대해 설명합니다. 자세한 내용은 AMQ JMS Interoperability 장을 참조하십시오.

JMS 메시지 유형

AMQ Ruby는 본문 유형이 다를 수 있는 단일 메시지 유형을 제공합니다. 반대로 JMS API는 다양한 종류의 데이터를 나타내는 다양한 메시지 유형을 사용합니다. 아래 표는 특정 본문 유형이 JMS 메시지 유형에 매핑되는 방식을 나타냅니다.

결과 JMS 메시지 유형을 보다 명시적으로 제어하려면 x-opt-jms-msg-type 메시지 주석을 설정할 수 있습니다. 자세한 내용은 AMQ JMS Interoperability 장을 참조하십시오.

표 8.5. AMQ Ruby 및 JMS 메시지 유형

AMQ Ruby 본문 유형JMS 메시지 유형

문자열

textMessage

nil

textMessage

-

BytesMessage

기타 유형

ObjectMessage

8.3. AMQ Broker에 연결

AMQ Broker는 AMQP 1.0 클라이언트와 상호 작동하도록 설계되었습니다. 브로커가 AMQP 메시징에 대해 구성되었는지 확인하려면 다음을 확인하십시오.

  • 네트워크 방화벽의 포트 5672가 열려 있습니다.
  • AMQ Broker AMQP 어셉터가 활성화되어 있습니다. Default acceptor 설정을 참조하십시오.
  • 필요한 주소는 브로커에 구성되어 있습니다. 주소, 큐 및 주제를 참조하십시오.
  • 브로커는 클라이언트의 액세스를 허용하도록 구성되며 클라이언트는 필요한 인증 정보를 전송하도록 구성됩니다. Broker Security 를 참조하십시오.

부록 A. 서브스크립션 사용

AMQ는 소프트웨어 서브스크립션을 통해 제공됩니다. 서브스크립션을 관리하려면 Red Hat 고객 포털에서 계정에 액세스하십시오.

A.1. 계정 액세스

프로세스

  1. access.redhat.com 으로 이동합니다.
  2. 계정이 없는 경우 계정을 생성합니다.
  3. 계정에 로그인합니다.

A.2. 서브스크립션 활성화

프로세스

  1. access.redhat.com 으로 이동합니다.
  2. 내 서브스크립션 으로 이동합니다.
  3. 서브스크립션 활성화로 이동하여 16자리 활성화 번호를 입력합니다.

A.3. 릴리스 파일 다운로드

.zip, .tar.gz 및 기타 릴리스 파일에 액세스하려면 고객 포털을 사용하여 다운로드할 관련 파일을 찾습니다. RPM 패키지 또는 Red Hat Maven 리포지토리를 사용하는 경우 이 단계는 필요하지 않습니다.

프로세스

  1. 브라우저를 열고 Red Hat Customer Portal 제품 다운로드 페이지에 access.redhat.com/downloads.
  2. INTEGRATION 및 AUTOMATION 카테고리에서 Red Hat AMQ 항목을 찾습니다.
  3. 원하는 AMQ 제품을 선택합니다. 소프트웨어 다운로드 페이지가 열립니다.
  4. 구성 요소에 대한 다운로드 링크를 클릭합니다.

A.4. 패키지에 대한 시스템 등록

Red Hat Enterprise Linux에 이 제품의 RPM 패키지를 설치하려면 시스템을 등록해야 합니다. 다운로드한 릴리스 파일을 사용하는 경우 이 단계는 필요하지 않습니다.

프로세스

  1. access.redhat.com 으로 이동합니다.
  2. Registration Assistant 로 이동합니다.
  3. OS 버전을 선택하고 다음 페이지로 이동합니다.
  4. 시스템 터미널에서 나열된 명령을 사용하여 등록을 완료합니다.

시스템 등록에 대한 자세한 내용은 다음 리소스 중 하나를 참조하십시오.

부록 B. Red Hat Enterprise Linux 패키지 사용

이 섹션에서는 Red Hat Enterprise Linux용 RPM 패키지로 제공되는 소프트웨어를 사용하는 방법에 대해 설명합니다.

이 제품의 RPM 패키지를 사용할 수 있는지 확인하려면 먼저 시스템을 등록해야 합니다.

B.1. 개요

라이브러리 또는 서버와 같은 구성 요소에는 종종 연결된 여러 패키지가 있습니다. 모두 설치할 필요는 없습니다. 필요한 항목만 설치할 수 있습니다.

기본 패키지에는 일반적으로 추가 한정자 없이 가장 간단한 이름이 있습니다. 이 패키지는 프로그램 런타임 시 구성 요소를 사용하는 데 필요한 모든 인터페이스를 제공합니다.

-devel 으로 끝나는 이름의 패키지에는 C 및 C++ 라이브러리의 헤더가 포함되어 있습니다. 이 패키지에 종속된 프로그램을 빌드하려면 컴파일 타임에 필요합니다.

-docs 로 끝나는 이름의 패키지에는 구성 요소에 대한 문서 및 예제 프로그램이 포함되어 있습니다.

RPM 패키지 사용에 대한 자세한 내용은 다음 리소스 중 하나를 참조하십시오.

B.2. 패키지 검색

패키지를 검색하려면 yum search 명령을 사용합니다. 검색 결과에는 패키지 이름이 포함되어 있으며 이 섹션에 나열된 다른 명령에서 < package > 값으로 사용할 수 있습니다.

$ yum search <keyword>...

B.3. 패키지 설치

패키지를 설치하려면 yum install 명령을 사용합니다.

$ sudo yum install <package>...

B.4. 패키지 정보 쿼리

시스템에 설치된 패키지를 나열하려면 rpm -qa 명령을 사용합니다.

$ rpm -qa

특정 패키지에 대한 정보를 얻으려면 rpm -qi 명령을 사용합니다.

$ rpm -qi <package>

패키지와 연결된 모든 파일을 나열하려면 rpm -ql 명령을 사용합니다.

$ rpm -ql <package>

부록 C. 예제와 함께 AMQ Broker 사용

AMQ Ruby 예제에는 example이라는 큐가 있는 실행 중인 메시지 브로커가 필요합니다. 아래 절차를 사용하여 브로커를 설치 및 시작하고 큐를 정의합니다.

C.1. 브로커 설치

AMQ Broker 시작하기 의 지침에 따라 브로커를 설치하고 브로커 인스턴스를 생성합니다. 익명 액세스를 활성화합니다.

다음 절차에서는 브로커 인스턴스의 위치를 < broker-instance-dir>으로 참조합니다.

C.2. 브로커 시작

프로세스

  1. 브로커를 시작하려면 Artemis run 명령을 사용합니다.

    $ <broker-instance-dir>/bin/artemis run
  2. 시작 중에 기록된 심각한 오류가 있는지 콘솔 출력을 확인합니다. 이제 브로커 로그 서버가 준비되면 활성화됩니다.

    $ example-broker/bin/artemis run
               __  __  ____    ____            _
         /\   |  \/  |/ __ \  |  _ \          | |
        /  \  | \  / | |  | | | |_) |_ __ ___ | | _____ _ __
       / /\ \ | |\/| | |  | | |  _ <| '__/ _ \| |/ / _ \ '__|
      / ____ \| |  | | |__| | | |_) | | | (_) |   <  __/ |
     /_/    \_\_|  |_|\___\_\ |____/|_|  \___/|_|\_\___|_|
    
     Red Hat AMQ <version>
    
    2020-06-03 12:12:11,807 INFO  [org.apache.activemq.artemis.integration.bootstrap] AMQ101000: Starting ActiveMQ Artemis Server
    ...
    2020-06-03 12:12:12,336 INFO  [org.apache.activemq.artemis.core.server] AMQ221007: Server is now live
    ...

C.3. 큐 생성

새 터미널에서 artemis 큐 명령을 사용하여 examples 라는 큐를 생성합니다.

$ <broker-instance-dir>/bin/artemis queue create --name examples --address examples --auto-create-address --anycast

일련의 예 또는 아니오 질문에 대답하라는 메시지가 표시됩니다. 모두 N 에 대한 답변입니다.

큐가 생성되면 브로커를 예제 프로그램과 함께 사용할 준비가 된 것입니다.

C.4. 브로커 중지

예제 실행을 완료하면 artemis stop 명령을 사용하여 브로커를 중지합니다.

$ <broker-instance-dir>/bin/artemis stop

2023-09-26에 최종 업데이트된 문서

법적 공지

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.