Whats New in Web Sphere MQ IBM Web
What's New in Web. Sphere MQ 한국 IBM Web. Sphere Business Integration 지용득 차장
IBM Web. Sphere MQ 버전 7의 테마 1 Web 2. 0 Java Message Service (JMS) Multi-Language Message Service MQ Interface Universal Messaging Backbone for SOA and Web 2. 0 IBM Web. Sphere MQ V 7. 0 Publish Subscribe By 개방형 표준의 지원 Web 2. 0 AJAX Applications and Data HTTP GET HTTP POST HTTP DELETE Web. Sphere MQ V 7. 0
Publish & Subscribe를 이용한 Loose Coupling Publisher Subscriber 1: 1 1: Many Publisher Topic Subscriber Publisher Topic 1: None Publisher Subscriber Many: 1 Many: Many
WMQ Explorer의 Publish/Subscribe 관련 화면
WMQ Explorer의 Publish & Subscribe 테스트 도구 및 상태 확인
Message Properties와 Handles: 소스코드 예제 // This is a router app - get a message and work with it // 1. Initial setup and read input MQCRTMH(h. Conn, &Crt. Msg. HOpts, &h. Request. Msg, &RC); Get. Msg. Opts. Msg. Handle = h. Request. Msg; MQGET(h. Conn, h. Obj, &Msg. Desc, &Get. Msg. Opts, Buf. Len, &Buffer, &Data. Len, &CC, &RC); // 2. Forward request unchanged to a server app, named in the message Put. Msg. Opts. Action = MQACTP_FORWARD; Put. Msg. Opts. Original. Msg. Handle = h. Request. Msg; MQPUT(h. Conn, h. Server. Obj, &MD, &Put. Msg. Opts, Data. Len, &Buffer, &CC, &RC); // 3. Tell requester message has been dealt with by updating existing property Name. VSPtr = “Request. Status”; Name. VSLength = MQVS_NULL_TERMINATED; MQSETMP(h. Conn, h. Request. Msg, &Set. Prop. Opts, &Name, &Prop. Desc, MQTYPE_STRING, “REQUEST RECEIVED”, 16, &CC, &RC); Put. Msg. Opts. Action = MQACTP_REPLY; Put. Msg. Opts. Original. Msg. Handle = h. Request. Msg; MQPUT(h. Conn, h. Reply. Obj, &MD, &Put. Msg. Opts, Data. Len, &Buffer, &CC, &RC); // 4. Also put a completely unrelated message to a logging queue Put. Msg. Opts. Action = MQACTP_NEW; Put. Msg. Opts. Original. Msg. Handle = MQMH_NONE; MQPUT(h. Conn, h. Log. Obj, &MD, &Put. Msg. Opts, Data. Len 2, &Log. Msg. Buf, &CC, &RC); MQCMIT(h. Conn, &CC, &RC);
WMQ Explorer에서 Message Properties 확인
Asynchronous Message Consumptions 1 • JMS 스펙에 대한 WMQ의 네이티브한 Implementation Ø JMS 외의 MQI 기반 프로그램 또한 활용 • 비동기적인 Message Consumer는, Ø Message-driven 방식의 호출 가능한 Function 혹은 Runtime Ø Message가 Queue에 도착하면 Message를 처리(GET) Ø Queue Manager가 Invoke Ø Buffer를 통해 호출한 프로그램에 Message 본문을 Return • 비동기적으로 Message 가져오기(Call Back 기능) Ø 새로운 WMQ Call인 MQCB로 Message Consumer 기능을 할 Function이나 Runtime을 등록 Ø 새로운 WMQ Call인 MQCTL로 Message Consumer를 시작/정지 Ø MQGET(WAIT) 또는 MQGET(SIGNAL)을 사용하지 않아도 됨 Ø 애플리케이션 디자인 상에서 Thread가 다수의 Queue로부터 § 로직의 Blocking 없이 § 비동기적으로 Message를 가져오도록 디자인 가능
Asynchronous Message Consumptions 2 pgma MQCONN MQOPEN(QUEUE 1, &h. Obj 1) pgma MQGET(&h. Obj 1) MQCONN MQOPEN(QUEUE 1, &h. Obj 1) MQDISC func 1(. . ) MQOPEN(QUEUE 2, &h. Obj 2) Process message MQCB(h. Obj 1, func 1) MQCB(h. Obj 2, func 1) MQPUT 1(md. Reply. Q, . . . ) MQCTL(MQOP_START_WAIT) MQDISC return
Message Selector • JMS 스펙의 Selector에 대한 네이티브 지원 • SQL 92 질의를 활용하여 GET 또는 Subscribe하려는 Message 필터링 Ø MQMD의 개별 필드나 Message Properties 내의 값을 토대로 Ø MQOPEN 또는 MQCB 수행 시 오브젝트 핸들(Object Handle)에 SQL 질의 추가 § 이를 위하여 Object Handle이 변경되었음 Ø Queue Manager 내에서 수행되며, 해당 애플리케이션은 필터의 결과만을 보게 됨 Ø 애플리케이션 Message 본문 내부에 대한 필터링은 하지 않음 § Content에 대한 탐색, 파싱, 필터링은 Web. Sphere Message Broker를 계속 활용 MQOPEN Obj. Name = “DESTQ” h. Obj DESTQ 1 DESTQ Selector. String = “team=hursley” 3 2 MQRC_NO_MSG_AVAILABLE 1. team = hursley sport = football 2. team = hursley sport = baseball 3. team = romsey sport = football
향상된 Client Connection 관리 2: Client Multiplexing SVRCONN Channel의 Conversation 공유(대화 공유) SVRCONN Channel의 상태에서 확인할 수 있는 공유 상태
향상된 Client Connection 관리 3 개별 Client 최대 수 도달 에러 Message
WMQ 버전 7의 새로운 기능과 JMS 스펙 간의 연결 Client Conversation 공유 기능은 JMS Session들이 Socket 을 공유하도록 지원 JMS Client WMQ Queue Manager C h. C Socket S S S h. C JMS의 비동기적인 Message 가져오기는 MQI의 Call Back 기능을 활용 Consumer JMS Selector는 MQI에서 Selector를 제공함으로써 네이티 브하게 지원됨 Consumer JMS의 비동기적인 Message Producing은 MQI 옵션 또는 오브젝트 설정으로 지원 새로운 Publish & Subscribe 엔진은 JMS Topic 도메인과 일 치 MQMD와 MQ Message 본문을 JMS 프로그램에서 접근할 수 있으며 Message Properties를 작성/접근할 수 있는 API 제공 h. C x Producer JMS App Consumer WMQ App
Web. Sphere MQ Bridge for HTTP - Architectural Overview Web Browsers Javascript AJAX http: //mq. com: 1415/msg/ HTTP: POST/GET/DELETE J 2 EE Application Server WMQ JMS Client Connection HTTP Clients SVRCONN CHANNEL queues/my. Q topics/stocks/IBM Java libwww Queue Manager WMQ HTTP Bridge WMQ JCA + JMS WMQ Bindings Connection
HTTP-MQI Call 맵핑 • Queue 또는 Topic을 구분하기 위해 URI 정의 • REST 프로토콜에 기반한 리소스 맵핑 • Message Format: Ø 헤더(MQMD)는 HTTP 헤더에 추가됨 Ø Message 본문은 HTTP 본문으로 전달됨 Ø Message Type은 HTTP Content-Type을 통해 전달됨 § “text/plain” 또는 “text/html”는 WMQ의 문자열 Message인 MQFMT_STRING에 해당되며 § 기타 다른 유형의 Message는 WMQ 이진 Message인 MQFMT_NONE으로 맵핑 HTTP verb mapping Resource Messages Sample URIs http: //host/msg/queue/qname/ http: //host/msg/topic/opic_path/ GET POST PUT DELETE MQGET w. browse MQPUT - MQGET
Queue Manager Set(그룹설정)
WMQ Explorer 보안설정 및 원격 Queue Manager 연결
성능 향상 • Persistent Publish & Subscribe 처리량 최고 60% 증가 • Non-persistent Client 처리량 최고 300% 증가 • JMS Selector 처리량 최고 250% 증가 • Message Listener(Message Driven Bean) 처리량 최고 45% 증가 • 자세한 버전 별 성능 비교는 Support. Pacs로 제공되는 버전 7 Performance Report 참고
- Slides: 32