하나의 질문에 여러 가지 질문을하는 것처럼 보입니다. 대답이 필요한 개별적인 점을 조금 명확하게 설명하면 도움이 될 것입니다.
예, JMS를 '임시'저장소로 사용할 수는 있지만 그 의미와 필요한 항목에 따라 다릅니다. (예 : ActiveMQ를 같은) 대부분의 JMS 공급자는 큐에서 다음 작업을 수행 할 수 있습니다 :
- 내구성에 큐를 설정 ((디스크 즉, 저장소와 큐는 모든 메시지가 다시 시작됩니다 경우) 또는 비 내구성 즉 디스크에 저장하지 말고 큐가 다시 시작되면 메시지가 표시되지 않습니다.
- 메시지에 만료 시간을 설정할 수 있습니다. 따라서 메시지가 만료되지 않으면 메시지가 삭제됩니다.
이는 '임시 저장 장치'라고하는 것에 따라 다릅니다. JMS 대기열은 메시징 시스템 인 데이터베이스가 아닙니다.
데이터 구조와 관련하여 일반 Java 객체를 모두 ObjectMessage
으로 직렬화하고 TextMessage
을 사용하는 문자 메시지를 직렬화 할 수 있습니다. 따라서 XML, JSON, CSV 또는 원하는 것을 통과 할 수 있습니다. 메시지와 관련된 라우팅 또는 기타 메타 정보에 사용할 수있는 특수 헤더를 포함 할 수도 있습니다. 다시 '사용자 지정 데이터 구조'가 의미하는 바에 달려 있습니다. 또한 원시 BytesMessage
또는 MapMessage
(키 - 값 쌍)을 보낼 수도 있고 StreamMessage
다른 데이터 형식을 차례대로 보낼 수도 있습니다.
문자 그대로의 의미로 임시 저장소가 필요하다면 Derby 나 HSQLDB와 같은 내장 데이터베이스를 살펴 봐야 할 것입니다. 데이터가 너무 커지면 데이터를 메모리에 남겨 둘지 디스크에 저장할지 여부를 지정하는 구성도 있다고 생각합니다.
출처
2013-04-18 15:44:52
jbx
JMS API로 작업을 수행하면 충분합니다. 그러나 대기열은 임시 저장소로 사용되는 것이 아니라 메시지를 비동기 적으로 전달할 것으로 예상됩니다. – IndoKnight
@Indoknight 귀하의 회신에 감사드립니다,하지만 내 요구 사항은 임시 저장 장치입니다. 같은 디자인 패턴이나 구성 요소가 있습니까? – gurvinder372
저장 용량의 범위에 따라 다릅니다. Java에서는 응용 프로그램 범위의 정적 변수와 개체 수준 범위의 인스턴스 변수를 사용할 수 있습니다. – IndoKnight