2013-01-22 4 views
3

의 org.hornetq.api.core.client.ClientMessage.setBodyInputStream과 같습니다. 다음은 JBoss/HornetQ user manual page입니다. HornetQ는 java.io.InputStream을 사용하여 대기열에 대한 메시지 스트리밍 데이터를 처리하는 방법을 제공합니다. 동일한 코드의 JMS 버전이 제공됩니다. IBM MQSeries/WebsphereMQ를 사용하여 누구와도 동등한 경험을 쌓았습니까?IBM MQSeries

JMS 메시지에 많은 양의 데이터를 배치해야한다고 말합니다. 이는 나에게 바이트 스트림입니다. Hornet 예제에서 스트림은 메시지가 전송 될 때만 읽혀 지므로 FileInputStream이라면 바이트 덩어리를 버퍼링하기에 충분한 메모리가 필요합니다. javax.jms.BytesMessage를 사용하여 바이트의 청크를 보내고 BytesMessage를 사용하여 버퍼를 버퍼링 할 수 있습니다. 이 문제는 IBM에서 구현 한 BytesMessage (com.ibm.msg.client.jms.internal.JmsBytesMessageImpl)가 Message가 전송 될 때까지이를 캐시해야하며, 많은 양의 데이터가 문제가된다. BytesArrayOutputStream에 하나는 DataOutputStream에, 다른 하나는 BytesArrayOutputStream에 중복 복사본을 유지하는 것으로 나타납니다.

+0

MQSeries BB에 게시했습니다. http://www.mqseries.net/phpBB2/viewtopic.php?p=346958#346958을 참조하십시오. 거기에 몇 가지 대답이 있습니다. 필자는 MQSeries 구현자가 아니기 때문에 응답자 중 한 명에게 맡깁니다. – JFK

답변

0

WMQ에는 그룹 및 세그먼트 개념이 있습니다. 세그먼트 화는 Z/OS를 제외한 모든 OS에서 지원됩니다.

여기에서 자세한 내용을 확인 GROUPID, MsgSeqNumber의 Segmentation In WMQ

만들기 사용, 메시지를 넣는 동안 오프셋.

당신이 GMO에 MQGMO_COMPLETE_MSG을 주면 메시지를 가져 오는 동안

는 모든 세그먼트는 MsgSeqNumber에와

에 따라 자동으로 연결된다 당신이 단일 GET와 잡 응용 프로그램에 하나의 메시지가 표시됩니다.

1

WebSphere MQ에서 가장 가까운 것은 reference message입니다. Infocenter에 설명 된 방법은 채널을 통해 전송되기 전에 파일 시스템 객체를 잡고 메시지에 넣기 위해 채널 종료의 사용자 정의 프로그래밍을 필요로합니다. 원격 측의 보완적인 출구는 파일에 페이로드를 저장하고 응용 프로그램에 반환되는 메시지의 파일에 대한 참조를 넣습니다.

또한 WMQ에는 한쪽 끝에 STDIN 또는 파이프를 가져 와서 다른 쪽 끝에있는 대기열에 메시지를 넣는 프로그램이 있습니다. 한 쌍은 파이프로 작동하여 행 지향 ASCII 데이터가 별도의 시스템에있는 프로세스간에 전달됩니다. 그러나 이것에 대한 JMS 구현은 없으며 바이너리 데이터에는 적합하지 않습니다.

관련 문제