2013-07-08 2 views
3

신뢰할 수있는 FIFO 통신을 추가하기 위해 소형 미들웨어 시스템을 확장하고자하며 브로커 간 연결은 FIFO 여야합니다. 현재 미들웨어의 통신 레이어는 소켓과 RMI를 지원합니다. 그러나 소켓 및 RMI 메시지 개체에 대한 FIFO 순서를 제공 할 수 있다고 생각하지 않습니다.신뢰할 수있는 FIFO 메시징 Java

RMI의 메시지 개체 수준에서 FIFO 순서를 적용 할 수있는 방법이 있습니까?

지금까지 FIFO 순서를 보장하기 위해 통신 레이어에 JMS와 같은 것을 사용하기로 결정했습니다. 이게 말이 돼? 아니면 다른 경량 대안이 있습니까?

다른 옵션은 메시지 번호를 사용하고 소켓이나 RMI의 상단에 작은 프로토콜을 작성하여이 순서를 구현한다고 생각하지만 이는 많은 작업처럼 보이고 특별한 경우를 처리해야합니다.

+1

저는 특별한 제품보다는 Java로 신뢰할 수있는 메시징을 가질 수있는 방법을 묻습니다! 내 질문은 JMS와 같은 메시징 API를 사용할 수 있는지 아니면 제품이 아닌 다른 대체 방법/기술이 있는지 여부입니다. – p00ya00

+0

"그러나 소켓과 RMI가 메시지 개체에 FIFO 순서를 제공 할 수 있다고 생각하지 않습니다." 왜 안돼? – EJP

답변

2

는 여러 오픈 소스 메시징 예를 RabbitMQ, ActiveMQ, ZeroMQ에 사용할 수있는 시스템 및 HornetQ있다 - 당신이있어 한 번에들이 모두 사용하기 매우 쉽습니다 설정합니다. 스레드가 아닌 프로세스간에 통신하는 경우에만 BlockingQueue 또는 PriorityBlockingQueue (대부분의 시스템에서 RabbitMQ/ActiveMQ/ZeroMQ/HornetQ를 사용하여 프로세스간에 통신 한 다음 [ 우선 순위] BlockingQueue).

+0

고마워요! 각 브로커가 다른 시스템에 있기 때문에 프로세스간에 메시지를 보내려고합니다. 그래서 당신은 MoM을 다른 MoM을위한 커뮤니케이션 레이어로 사용하는 것이 합리적이라고 생각합니까? 이것이 FIFO 순서를 얻는 유일한 방법일까요? – p00ya00

+1

@ p00ya00 단순함의 측면에서 MoM을 다른 MoM의 통신 레이어로 사용하는 것이 합리적이라고 생각합니다. 기존의 소프트웨어에 대기열을 추가하지 않고 전문적인 큐잉 소프트웨어를 사용하고 있습니다. 결과적으로 버그를 유발할 수있는 잠재력을 가지므로 하이브리드 시스템이보다 안정적이라는 결과를 가져옵니다. (버그를 던지는 메시징 시스템에 문제가 없었습니다. 이들은 항상 응용 프로그램 계층에서 왔습니다.) RMI에서 FIFO 순서를 수행하는 방법을 알지 못합니다. –