WebSphere MQ V7 김안자 (ajk@kr.ibm.com) MTS, IBM Korea
WebSphere MQ RoadMap (20xx) MQ Version X.Y (05/08) MQ V7 with Integrated Pub/Sub Rearchitected JMS Extended APIs (01/09) MQ V7.0.0.1 with Service Def Wizard XA-aware API Exit V7.0.1 Early Access Program (08/09) MQ V7.0.1 with Multi-Instance Queue Managers Automatic Client Reconnect Enhanced.NET support Increased z/os Capacity z/os Group Units of Work 06/08 12/08 06/09 12/09 06/10 12/10 2
Websphere MQ V7 의기능향상 Web 2.0 Java Message Service (JMS) Multi-Language Message Service IBM WebSphere MQ V7.0 Publish Subscribe MQ Interface Publish & Subscribe에대한기능개선 JMS 구현에대한지원확대와성능개선 MQI 기반개발용이성증대 관리성향상 Client Performance Management MQ Explorer 기능향상 Web 2.0지원 3
WebSphere MQ Version 7 JMS 향상 많은애플리케이션들이 JMS API를사용 많은 SOA/ESB 솔루션들이메세징처리가필요 성능및사용용이성이향상 Publish-and-subscribe 향상 사용편의성 z/os 지원 MQI 프로그래밍인터페이스에대해기능확장 MQ client 향상 Web 2.0 애플리케이션들을위한 Bridge기능제공 4
지원플랫폼 기본적으로버전 6 과같은플랫폼을지원 최신지원환경에관해서는다음의 URL 을참조 http://www-306.ibm.com/software/integration/wmq/requirements/in dex.html Linux/zSeries 31-bit 버전은더이상지원되지않음 ; 64-bit 버전만계속지원 Windows 2000 지원중단 Windows XP 가 Windows 의기본 OS 레벨, Vista 지원 Windows x64 Windows 64-bit 애플리케이션지원 기존 32-bit 애플리케이션역시지원 일부 EXIT 프로그램은 32-bit 와 64-bit 를모두지원하기위해재컴파일필요 Java 1.4.2 또는이후버전 5
지원플랫폼 Linux (x86) Red Hat Enterprise Linux (RHEL) V4.0 or later update SuSE Linux Enterprise Server (SLES) V9 or V10 NLPOS9 FP1 IRES V2 Red Flag Data Centre V5.0 z/linux zseries platform (not supported in this release) zseries s390x platform AIX V 5.3 or later Sun Solaris V9 & V10 (SPARC or x86-64) HP-UX 11i v2 or higher on PA-RISC or Itanium iseries i5/os V5.3.0 or later levels Platforms Windows XP Professional 32/64 bit Windows 2003 Standard/Enterprise 32/64 bit Windows Vista Business/Enterprise/Ultimate 32/64 bit (New in V7 is the support for 64-bit platforms) z/os V1.8 or later Linux (on x86-64 or on POWER) Red Hat Enterprise Linux V4.0 or later SUSE Linux Enterprise Server (SLES) V9 or V10 Server Client with server with server with server with server with server with server with server 6
What is Publish/Subscribe? Publish/Subscribe 는정보제공자와정보소비자를분리한애플리케이션모델을정의하는단어이다. 정보제공자는정보의소비자에대해서알필요가없다. 정보소비자는정보제공자에대해서알필요가없다. 정보제공자를 publishers 라고한다. 정보소비자를 subscribers 라고한다. 새로운 providers/consumers 들을애플리케이션의중단없이추가가능 7
Publish/Subscribe 예시 Stock Feed "feed" 계속적으로정보를관심이있는사람들에게제공한다. Trader 들은제공받은정보를소비하고, 이를이용해주식을사고판다. Traders 8
Loose Coupling with Publish/Subscribe Topic Few-to-many: Research, news tickers Topic Many-to-many: Prices and Quotes Topic Many-to-few: Orders 9
Publish/Subscribe JMS, WMQ API 의일부 비동기적메시지처리기반의다수대다수통신 애플리케이션간의보다더느슨한연결을지향하는메시지처리모델 V7로부터네이티브 MQI의일부로완전히구현됨 Point-to-Point 비동기적메시지처리는애플리케이션을느슨하게엮음 (Decoupling) 하지만여전히송신자와수신자와의연결해야함 Publish & Subscribe 은애플리케이션간의느슨한연결을더욱진보시킴 송신자는얼마나많은수신자가, 또는어떤수신자가 Message를받게되는지알필요가없음 애플리케이션간의연결은 Queue가아닌 Topic WMQ 버전 6에는별도의 Publish & Subscribe Broker 서비스가있었음 ( 이전 MA0C SupportPac 존재 ) 버전 7에서도기존애플리케이션은호환됨 버전 7 에이르러 Publish & Subscribe 구현에많은향상 z/os 역시지원시작 10
Publish/Subscribe 관리 토픽문자열 (Topic Strings) 기반 Topic 오브젝트 Queue나채널같은새로운오브젝트유형 A 48-character name which has a longer attribute for full topic string topic tree 구성 애플리케이션이 pub/sub 시작전추가적인정의가필요없음 In-use topics 어플리케이션이 publishing하거나 subscribing 하는 topic string 가장근접해있는상위토픽오브젝트로부터속성상속 (eg security) 관리적인요소는없으며, view는가능 DEFINED TOPIC TREE / IN-USE TOPICS SPORTS NEWS SUBSCRIBE("/SPORTS/CRICKET/WEST INDIES") CRICKET RUGBY SUBSCRIBE("/NEWS/POLITICS/WESTMINSTER") SUBSCRIBE("/TV/DRAMA/WEST WING") 11
Publish/Subscribe 관리 (2) durable and non-durable subscriptions 지원 Durable인경우 client는메시지분실없음 Durable는 queue full 여지있음 Non-durable는어플리케이션 life-time 을위해서만존재 애플리케이션이비정상적인종료시, 수동 cleanup 작업필요없음 Subscription DISPLAY QSTATUS처럼 Topic에누가 subscribing을하는지확인가능 third party를대신해 subscription 생성가능 Security 토픽사용은관련토픽오브젝트에대한허가에의해제한되어진다. WMQ에서가지고있는보안구성 (SAF나 OAM) 을그대로따른다. 12
WMQ Explorer 의 Publish/Subscribe 관련화면 13
Publish/Subscribe 애플리케이션프로그래밍 JMS Publish & Subscribe Implementation 을네이티브 MQI 에포함, 구현 MQI 프로그래밍레이어를개선하여 JMS 구현을좀더네이티브하게 JMS 구현이새로운 MQI 기능을활용 Subscription 을위한새로운 WMQ Call 추가 이전버전의 WMQ에서추가적인헤더 (MQRFH2) 등을다룰때생기는불편을해소 MQSUB는 Topic에 Subscribe하기위한새로운 WMQ Call 이후발생하는 Topic을가진 Message에대한 구독 선언 기존 Call 에대한새로운옵션추가 Topic 오브젝트에접근하기위한 MQOPEN 옵션상의변화 Topic 오브젝트를닫아구독을중단하기위한 MQCLOSE 옵션상의변화 Message를발행 (Publish) 하거나받아보기위한 MQPUT, MQGET 옵션상의변화 14
Message Properties 메시지 properties는데이터 body 부분이아닌 MQMD내임의의필드 사용자확장가능한 MQMD MQMD 메시지 properties는 JMS 스펙의일부 새로운 Call : MQSETMP, MQINQMP Propertie는 integers, strings, boolean타입으로표현가능 BODY RFH2 folders보다사용용이 애플리케이션이필요없는경우보이지않음 메시지 header부분을 skip하거나파싱필요없음 호환성을위한구성옵션 큐나채널에대한이전버전호환성유무설정가능 디폴트는 RFH2 헤더생성 메시지간관계에대한명확한제시허용 에 ) Message X is a REPLY to Message Y 메시지는핸들러를통해참조되어진다. PROPS XX=YY 15
기타 MQI 향상 비동기메시지수신 새로운 MQCB 속성을 callback function에추가 메시지도착시자동호출 MQGET(WAIT) 이나 MQGET(SIGNAL) 불필요 하나의 thread가다중 queue로부터메시지수신가능 새로운 MQCTL 속성은메시지 consumer를 start/stop Selector SQL92 질의를사용해 MQMD 필드에있는 perperties로메시지선별 메시지를필터링하기위해 MQOPEN, MQCB 지정가능 Selection은큐매니저내부에서이루어짐 메시지 body는볼수없음 Message Broker 가여전히 content filtering 기능수행 16
Java 프로그래밍 JMS 는모든 MQMD 필드에대해서 properties 로 read/write 가능 애플리케이션프로그램은명시적으로접근사용하도록선언 JMS 스팩보다확장해사용가능 JMS 전체메시지 content 에대한접근허용 전체 body는 byte array로 보통제거되었던RFH2정보를볼수있음 Message Header Classes 제공 SupportPac MS0B을업데이트 PCF structures를 parse하고 build하는데용이 다른 MQI message header format에접근이용이 예 ) MQCIH, MQDLH classes 17
Client performance : Read Ahread Client 연결을위한미리읽어오기기능 ("Read Ahead ): Client가 GET할가능성이있는다수의 Message를미리 MQGET하여 Client 측의 Read Ahead Buffer에저장 관리인터페이스를통해이옵션을사용할지여부결정 : 애플리케이션코드에영향없음, 오브젝트설정과 API 옵션으로적용가능 신규오브젝트등록정보로추가, 디폴트는 Off API 옵션 : ex) MQOO_READ_AHEAD 연결상태에서미리읽기옵션선택여부확인 JMS Client 인터페이스도 MQI와동일한이점이부여됨 Read Ahead Buffer 크기나그크기가결정되는방식을설정 Client의성능향상VS Low Quality of Service Read Ahead Buffer의 Message는버려지거나 Client 코드가 Buffer를모두소모할때까지기다리도록구성 일부 API 옵션에대한사용제한 : ex) MQGMO_SYNCPOINT 18
Client Performance : Asynchronous Put Client 의비동기적인 Put ("Asynchronous Put 또는 Fire & Forget ): 애플리케이션은 MQPUT Call에대해동기적으로그결과에대한 CC( 완료코드 ) 나 RC( 리턴코드 ) 를동기적으로기다리지않겠다고선언가능 대신이후에그결과를확인할수있음 ; 새로운 MQI Call인 MQSTAT Call 사용 Client 코드는 CC=OK나 RC=OK를발행하고나서 Message를네트워크를통해 Queue Manager로보냄 Completion Code = OK가 Message가 Queue에문제없이쓰여진것을의미하는것은아님 관리인터페이스를통해이옵션을사용할지여부결정 : 애플리케이션코드에영향없음, 오브젝트설정과 API 옵션으로적용가능 신규오브젝트등록정보로추가, 디폴트는 Off API 옵션 : ex) MQPMO_ASYNC_RESPONSE 적절한환경하에 Client에적용하는경우큰성능향상기대 적용가능한환경 Non-persistent Message 또는단일 UOW 내의 Persistent Message들만가능 Client로연결한애플리케이션만가능 19
Client connection 관리 Multi-threaded Client 애플리케이션을위한 Conversation 공유 같은 Process 에서파생된 Thread 는같은소켓 (Socket) 내에서처리 Channel 설정절차는최초에한번만수행되어두번째와그이후에파생되는 Client 연결Thread는더욱빠른소켓처리시작 Server 쪽 Socket 수의낭비를막을수있음 그에따라Queue Manager 쪽의필요Thread를줄일수있음 양방향 Heartbeat을통해더신속한 Client 장애감지 오브젝트및 API 옵션상의변화 SVRCONN Channel 의 SHARECNV 값 : Socket 당최대공유 Connection 수 MQI Client + JMS Client 모두개선 20
Client Connection 관리 Client Connections 관리 단일컴퓨터에서해당 SVRCONN Channel을통해허용할 Client 연결인스턴스수를제한하고확인가능 최대인스턴스 ; MAXINST( ): 해당 SVRCONN Channel에대한최대연결인스턴스개수 Client 당최대인스턴스 ; MAXINSTC( ): 해당 SVRCONN Channel에대한단일 Client(IP) 당최대연결인스턴스개수 의도적인또는의도적이지않은 Client의 Server 자원점유에대한예방차원의대응에적합 21
WebSphere MQ Bridge for HTTP Architecture Web Browsers Javascript AJAX HTTP clients HTTP: POST / GET / DELETE http://mq.com:1415/msg/ JEE Application Server WMQ JMS client connection SVRCONN CHANNEL Queue Manager queues/myq topics/stocks/ibm Java WMQ HTTP Bridge WMQ JCA + JMS WMQ Bindings Connection libwww WebSphere MQ Bridge for HTTP는 큐와 Topic에대해서 URI에매핑 MQPUT and MQGET 가능 Web Browser Lightweight client non-servlet implementation (MA94) 22
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 Sample URIs GET POST PUT DELETE Messages http://host/msg/queue/qname/ http://host/msg/topic/topic_path/ MQGET w. browse MQPUT - MQGET 23
Example HTTP Flow POST(=MQPUT) Request: POST /msg/queue/requestq/ HTTP/1.1 Host: www.mqhttpsample.com Content-Type: text/plain Content-Length: 60 x-msg-replyto: /msg/queue/replyq/ x-msg-requiresheaders: msgid, priority, timestamp Message body which will appear on the queue as an MQSTR Put to destination Response: Response code HTTP/1.1 200 OK x-msg-msgid: 1234567890 x-msg-timestamp: GMT Thu, 22 Mar 2007 08:49:37 x-msg-priority: 4 Type and length of message (60 char string) Headers to include on reply Message Data Required Headers reply Queue 24
MQ Explorer 향상 Queue Manager 그룹설정 (Sets) Queue Manager들을탐색창내에서그룹으로나누어관리할수있음 가령, "Test", "Production 등으로그룹을작성해그용도에따라접근하도록분류 이와같은설정을 Explorer에서 Export/Import할수있어관리유연성증가 보안설정 Channel Exits 와 userid/password 에대한설정이용이해졌음 Explorer를통해원격지 Queue Manager에연결하고자할때Password 관리자를통해로그인가능 편의를위해 Password를컴퓨터에안전하게 ( 암호화하여 ) 보관 이전버전대비더긴밀한 JMS 관리통합 Connection Factory 나 Destination 과같은 JMS 오브젝트를작성하면서, 동시에이를 WMQ 의오브젝트인 Queue 또는 Topic 과연관시킬수있음 Explorer 에서직접 JNDI 컨텍스트에대한설정이가능하며 JNDI 네임스페이스에오브젝트스펙을직접등록 Message 찾아보기 (Browse) 옵션설정 Message 의개수나열람할 Message 의바이트를지정가능 25
MQ Explorer Queue Manager Set 26
MQ Explorer - Security 27
MQ Explorer Test Plug-in 28
유용한 SupportPac MS0T WebSphere MQ Explorer 를 SupportPac 으로제공 참조 URL : http://www.ibm.com/support/docview.wss?rs=171&uid=swg 24021041 MQ Explorer 는 Eclipse V3.3 First Release V7.0.0.1. 최신 V7.0.1.3 지원플랫폼 : Windows, Linux WebSphere MQ Explorer Eclipse 기반의그래픽구성 Tool 리모트큐매니저접속을지원 WebSphere MQ client 나 server가필요없음 29
감사합니다 Q & A 30