Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

RabbitMQ

508 visualizaciones

Publicado el

RabbitMQ

Publicado en: Tecnología
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

RabbitMQ

  1. 1. RabbitMQ 개발팀
  2. 2. Why Messaging? • Get data from point A to point B • Decouple publishers and consumers • Queueing for later delivery • Asynchronous • Load balancing and scalability
  3. 3. • Message Queuing • 프로세스 또는 프로그램 인스턴스가 데이터를 서로 교환할때 사용하 는 방법 • 데이터를 교환할때 시스템이 관리하는 메세지 큐를 이용하는 것이 특징 • 대용량 데이터를 처리하기 위한 배치 작업이나, 체팅 서비스, 비동기 데이터를 처리할때 사용 MQ
  4. 4. • Advanced Message Queueing Protocol • http://www.amqp.org/ • Broadly applicable for enterprise • Totally open • Platform agnostic • Interoperable • Standard port is 5672/tcp • List of brokers AMQP
  5. 5. • RabbitMQ is an AMQP messaging broker • Developed and maintained by Rabbit Technologies Ltd, www.rabbitmq.com • Joint venture between Cohesive Flexible Technologies (www.cohesiveft.com) and LShift (www.lshift.net) • Core development team in London, UK • Rabbit is a part of AMQP Working Group RabbitMQ What?
  6. 6. RabbitMQ Why? • Robust messaging for applications • Easy to use • Runs on all major operating systems • Supports a huge number of developer platforms • Open source and commercially supported
  7. 7. • RabbitMQ is a broker written in Erlang • RabbitMQ team alse provides Java and .NET clients • Implements AMQP 0-8 spec • Experimental products include AMQP-over-HTTP + Javascript libraries, Erlang client, gateway for STOMP clients, XMPP (Jabber) gateway RabbitMQ
  8. 8. 1. 설치 • Erlang 설치 • Rabbit MQ 다운로드 후 설치 2. 기본 명령 • 서버 기동 : sbin/rabbitmq-server start. 윈도우즈에서는 services.msc에서 서비스로 시작 • 상태 체크 : sbin/rabbitmqctl status • 서버 중지 : sbin/rabbitmqctl stop RabbitMQ
  9. 9. 3. Web Admin 모듈 • web admin 모듈 enable - "rabbitmq-plugins enable • rabbitmq_management" (이 다음 서비스를 restart해야 함) • http://localhost:15672/ 접속후 guest/guest로 로그인 RabbitMQ
  10. 10. RabbitMQ • Producer(메시지를 삽입하는 프로그램)을 P로, Consumer(큐에서 메시지를 꺼내는 프로그램)은 C으로 표기 • 실제로는 P 가 여러 개로 생각함 (이하 그림 동일) • C가 1개이므로 작업(메시지 처리)가 분산되지 않아, 실제로 사용할 일은 많지 않다. : 다만 로직을 P와 C로 분리하여, 오래 걸리는 작업은 C가 담당하면 사용자 입장에서의 응답속도가 빨라짐
  11. 11. RabbitMQ • 큐에서 순서대로 메시지를 읽어서 C1, C2, ... 순서대로 번갈아 수행한다. • 따라서 C1과 C2가 다른 메시지를 받지만 하는 일은 같다.
  12. 12. RabbitMQ • X(fanout)에 의해, 여러 큐에 모두 동일한 메시지가 삽입된다. • 따라서 C1, C2가 모두 동일한 메시지를 받지만 하는 일은 다르다. • Hellow World 예제에서 C가 하던 일을 C1, C2로 분리했다고 생각할 수 도 있다.
  13. 13. RabbitMQ • C가 X(direct)와 큐를 binding할 때, Key를 명시하고, 메시지의 Key와 비교해서 동일한(complete matching)경우만 각 큐에 삽입된다. • 위의 그림에서 Key가 error일 때는 두 큐에 모두 삽입되고, Key가 info, warning일 경우에는 두번 째 큐 에만 삽입된다. 그 외의 Key는 큐에 삽입되지 않는다. 다시 말해, 그 외의 key를 가진 메시지는 버려진 다. • 위의 경우 C1은 중대한 오류(error)에 대해서만 처리하고, C2는 모든 오류(info, error, warning)에 대해 서 처리한다. • 따라서 C1, C2는 다른 메시지를 받으며, 하는 일도 다르다.
  14. 14. RabbitMQ • 위의 Routing 예제와 비슷하다. 단 Key를 비교할 때, complete matching이 아니라 pattern matching을 사용 • 이 때 Key는 .(마침표)로 구분되어 word(토큰)로 나누어지며, 각 word에 대하여 *는 1 단어를, #는 0또는 여 러 개의 단어를 의미한다는 것이다. 개인적인 생각이지만, *와 #대신 일반적인 와일드카드인 ?와 *를 사용하 는 것이 더 직관적이었을 것이다. • 주의할 점은, 위 그림에서 P의 Key가 "lazy"일 때도 Q2에 전달된다는 것이다. 다시 말해 .(마침표)는 단어의 구분자일 뿐이며 X가 비교할 때에는 포함되지 않는다는 것이다. • 따라서 C1, C2는 다른 메시지를 받으며, 하는 일도 다르다.
  15. 15. RabbitMQ • RPC(Remote Procedure Call)를 사용하는 경우
  16. 16. RabbitMQ
  17. 17. 참고 http://ir.bagesoft.com/643

×