2009-04-08 3 views
1

메시지 큐를 사용할시기와 관련하여 실용적인 실제 문제를 해결할 수있는 몇 가지 규칙을 제공 할 수 있습니까?메시징/메시지 큐에 관한 경험 법칙

감사합니다.

+0

아마도 다음 저널 기사에서 제공하는 간단한 대기열 규칙을 사용할 수도 있습니다. http://puslit2.petra.ac.id/ejournal/index.php/civ/article/view/18524 ​​ – chugeluang

답변

5

비동기 메시징을 사용하면 시스템이 연결되지 않은 방식으로 통신 할 수 있습니다. 작업을 수행하기 위해 두 시스템을 동시에 사용할 필요는 없습니다.

다른 장점이 있습니다. 종종 메시징은 (때로 의도하지 않은) 조절 메커니즘을 제공합니다. 이렇게하면 많은 요청이 모두 동시에 들어오는 경우 수신 시스템이 압도 당하지 않게됩니다.

메시징 시스템은 또한 지속성 및 안정성 기능을 제공하며 메시징 플랫폼이나 수신 시스템이 중단 되더라도 메시지가 최종적으로 배달 될 것이라는 보장이 있습니다.

메시지 대기열은 또한 간접 지정 계층을 제공합니다. 대기열에 메시지를 배치하는 시스템은 누구에게 메시지를 수신 하는지를 반드시 알 필요는 없습니다. 수신자는 발신자에게 전혀 영향을 미치지 않고 미묘하거나 과감한 방식으로 바뀔 수 있습니다. 이와 같이 느슨한 결합이 일반적으로 바람직합니다.

많은 메시징 솔루션이 트랜잭션에도 참여할 수 있습니다. 이렇게하면 시스템이 메시지를 받고 응답으로 데이터베이스를 업데이트 할 수 있고 둘 다 성공했는지 또는 둘 다 성공하지 못했음을 알 수 있습니다. 필요한 경우 메시지 수신을 "롤백"하고 문제점이 발생하면 재 시도 할 수 있습니다.

1

메시지 큐는 안정적인 메시징을 제공합니다. 그들은 메시지가 완전히 손실되지 않도록 보장합니다. 죽은 메시지 대기열 등으로 지연되거나 전송 될 수 있지만 시스템에서 완전히 사라지지는 않습니다. 명시 적으로 삭제되지 않는 한 원본 클라이언트에 고정되어 있어도 어딘가에 항상 사본이 있습니다.

메시지 손실은 메시지 손실이 비즈니스에 해를 끼치거나 시스템이 불안정 해지는 상황에서 사용해야합니다. 그것들을 사용하는 데 오버 헤드가 있기 때문에, 비즈니스 요구 사항이 지시 될 때만 구현되어야합니다.

구현 된 상황에서 고정 된 메시지 (서비스가 다운되었거나 메시지의 형식이 잘못되어 처리 할 수없는 메시지 등)를 확인하는 모니터링 프로세스가 마련되어야합니다.) 적절하게 처리하십시오.

+0

신뢰할 수있는 메시징은 다음과 같습니다. 메시징 구현이 제공하거나 제공하지 않을 수도있는 기능. 메시징의 비동기 성은 응용 프로그램의 원동력입니다. – topchef

+0

질문은 일반적으로 메시징이 아닌 메시지 대기열의 사용에 관한 것이 었습니다. 대기열은 비동기 작업을 제공하지 않으며 대기열을 사용하지 않고 대기열을 가져올 수 있습니다. 그들이하는 일은 모든 단계에서 메시지의 안정적인 FIFO 저장을 제공하는 것입니다. –

2

계층 적 환경에서 서비스 지향적이지 않은 요청을 처리하는 비동기 적이지만 보장 된 방법이 필요한 경우.

1

메시지 큐는로드 균형 조정을 구현하는 데 유용합니다. 예를 들어, 서버는 "작업"메시지 (주문, 상태 메시지 ...)를 수신하여 모든 청취 클라이언트에 분배합니다.

메시지 큐는 메시지가 정확히 하나의 클라이언트에 전달되도록합니다.

클라이언트가 다른 컴퓨터에서 실행되는 경우 총로드가 분산되며 필요한 경우 다른 클라이언트를 메시지로드에 쉽게 전달할 수 있습니다. 클라이언트는 대기열에 연결하기 만하면됩니다. 메시지들.

EDIT : 시스템 (비동기) 사이에서 움직이는 물체에도

좋다.플랫폼 독립 형식 (JSON, XML)으로 직렬화 된 경우 다른 프로그래밍 언어간에 객체를 교환 할 수도 있습니다.