340 likes | 356 Views
Learn about the concept and new features of Publish/Subscribe in IBM WebSphere MQ V7, including administration, programming, and topology. Understand how publishers and subscribers communicate using topics.
E N D
WMQ V7 Pub/Sub Introduction 李慧 lihui@cn.ibm.com IBM CDL MQ L2 support , April 2011
Agenda • Pub/Sub concept • MQ V7 new feature • Pub/Sub adminstration • Pub/Sub Programming • Pub/Sub topology
What is Publish/Subscribe ? Publish/Subscribe is a term used to define an application model in which the provider of some information is decoupled from the consumers of that information. • providers of informationneed have no knowledgeof consumers • consumers of informationneed have no knowledgeof providers • new providers/consumers can be added without disruption • Providers of information are called publishers • Consumers of information are called subscribers
A "feed" provides a continuous flow of information which is pushed to interested parties Traders consume this information and use it as a basis for the buying and selling stock The classic example StockFeed Traders
Loose-coupling with Publish/Subscribe Topic Few-to-many: Research, news tickers Topic Many-to-many: Prices and Quotes Topic Many-to-few: Orders
Publications and subscriptions • Subscribers make subscriptions with the queue manager to register their interest in information relating to specific topics. • They use the MQSUB verb • Publishers provide information about specific topics by sending publications to the queue manager • They use the MQPUT verb • The queue manager forwards each publication it receives to all subscribers with a subscription which matches the associated topic
Web 2.0 Java Message Service (JMS) Multi-Language Message Service MQ Interface IBM WebSphere MQ V7.0 Publish Subscribe WebSphere MQ v7 Pub/Sub MQRFH to pub and sub? • Compatibility mode available in V7,embedded pub/sub engine • Now available on z/OS!and better performance on distributed platforms • Improved Pub/Sub adminstration • A natural part of the JMS API • Combines both Publish/Subscribe and Point-to-Point patterns • Now also a natural part of the native MQI v6 MQPUT + MQSUB! v7
Publish/Subscribe in WebSphere MQ Monitor Configure Topic Status Create TOPIC objects Display Connectionsand handles Configure attributes Topic Tree MQSUB ‘Price/Fruit/+’ MQGET MQOPEN ‘Price/Fruit/Apples’ MQPUT Interface
Topic strings and topic tree Price Fruit Vegetables Apples Oranges Potatoes Onions Price/Fruit/Apples Price/Fruit/Oranges Price/Vegetables/Potatoes Price/Vegetables/Onions
Topic Objects • Not necessary for Publish/Subscribe • Provide an administrative control point for your topic tree • Configuration attributes • Security profiles • Topic tree isolation MY.TOPIC.OBJECT
Defining a topic object SYSTEM.BASE.TOPIC DEFINE TOPIC ALTER TOPIC DELETE TOPIC DISPLAY TOPIC Price FRUIT Fruit Starting MQSC for queue manager TEST1. DEFINE TOPIC(FRUIT) TOPICSTR(‘Price/Fruit’) DURSUB(NO) DISPLAY TOPIC(FRUIT)AMQ8633: Display topic details. TOPIC(FRUIT) TYPE(LOCAL) TOPICSTR(Price/Fruit) DESCR( ) CLUSTER( ) DURSUB(NO) PUB(ASPARENT) SUB(ASPARENT) DEFPSIST(ASPARENT) DEFPRTY(ASPARENT) DEFPRESP(ASPARENT) ALTDATE(2008-02-26) ALTTIME(15.05.22) PMSGDLV(ASPARENT) NPMSGDLV(ASPARENT) PUBSCOPE(ASPARENT) SUBSCOPE(ASPARENT) PROXYSUB(FIRSTUSE) WILDCARD(PASSTHRU) MDURMDL( ) MNDURMDL( ) Apples Oranges
Starting MQSC for queue manager TEST1. DIS TPSTATUS(‘Price/Fruit’)AMQ8754: Display topic status details. TOPICSTR(Price/Fruit) ADMIN(FRUIT) MDURMDL(SYSTEM.DURABLE.MODEL.QUEUE) MNDURMDL(SYSTEM.NDURABLE.MODEL.QUEUE) DEFPSIST(NO) DEFPRTY(0) DEFPRESP(SYNC) DURSUB(NO) PUB(ENABLED) SUB(ENABLED) PMSGDLV(ALLDUR) NPMSGDLV(ALLAVAIL) RETAINED(NO) PUBCOUNT(0) SUBCOUNT(0) PUBSCOPE(ALL) SUBSCOPE(ALL) Resolving ASPARENT DISPLAY TPSTATUS Price FRUIT Fruit Apples Oranges
Alias Queues Price Starting MQSC for queue manager TEST1. DEFINE TOPIC(APPLES) TOPICSTR(‘Price/Fruit/Apples’) DEFINE QALIAS(PRICES) TARGTYPE(TOPIC) TARGET(APPLES) Fruit APPLES Apples Oranges MQPUT (PRICES) PRICES
Administration for Publishers TOPIC attributes DEFPRTYDEFPSISTDEFPRESPPUBPUBSCOPEPMSGDLVNPMSGDLV Price Connection ID links to DISPLAY CONN FRUIT Fruit Starting MQSC for queue manager TEST1. DIS TPSTATUS('Price/Fruit/+') TYPE(PUB) allAMQ8754: Display topic status details. TOPICSTR(Price/Fruit/Oranges) LPUBDATE(2008-02-26) LPUBTIME(16:50:44) ACTCONN(414D5143544553543120202020202020832AC44720005E02) NUMPUBS(3)AMQ8754: Display topic status details. TOPICSTR(Price/Fruit/Apples) LPUBDATE(2008-02-26) LPUBTIME(16:50:37) ACTCONN(414D5143544553543120202020202020832AC44720007601) NUMPUBS(1) Apples Oranges MQOPEN ‘Price/Fruit/Apples’ MQPUT MQOPEN ‘Price/Fruit/Oranges’ MQPUT MQPUT MQPUT
Creating administrative subscriptions Price Starting MQSC for queue manager TEST1. DEFINE SUB(APPLES.TO.Q1) TOPICSTR(‘Price/Fruit/Apples’) DEST(Q1) FRUIT Fruit Apples Oranges DEFINE SUB ALTER SUB DELETE SUB DISPLAY SUB MQGET (Q1)
Starting MQSC for queue manager TEST1. DIS SUB(*) AMQ8096: WebSphere MQ subscription inquired. SUBID(414D5120544553543120202020202020832AC44720028105) SUB(Fruit Prices) TOPICSTR(Price/Fruit/+) DEST(SYSTEM.MANAGED.DURABLE.47C42A8304810220) DESTQMGR(TEST1) DESTCLAS(MANAGED) DURABLE(YES) SUBTYPE(API) Configuring managed destinations SYSTEM.BASE.TOPIC Durable Model DEFTYPE(PERMDYN) TOPIC attributes MDURMDL(SYSTEM.DURABLE.MODEL.QUEUE)MNDURMDL(SYSTEM.NDURABLE.MODEL.QUEUE) Non-durable Model DEFTYPE(TEMPDYN) Price FRUIT Fruit Apples Oranges MQSUB ‘Price/Fruit/+’ MQSO_MANAGED MQSO_DURABLE MQGET SYSTEM.MANAGED.DURABLE.47C42A83095D0220
FULL Configuring Behaviour on Failure TOPIC attributes PMSGDLVNPMSGDLV TOPIC attribute defaults PMSGDLV (ALLDUR)NPMSGDLV (ALLAVAIL) MQSUB ‘Price/Fruit/+’ MQGET MQSUB ‘Price/Fruit/+’ MQGET MQOPEN ‘Price/Fruit/Apples’ MQPUT MQSUB ‘Price/Fruit/+’ MQSO_ DURABLE MQGET MQRC_PUBLICATION_FAILURE
Displaying a subscription MQSD.SubName MQSD.ObjectName MQSD.ObjectString MQSO_WILDCARD_CHAR MQSO_WILDCARD_TOPIC MQSO_MANAGED or not MQSUB hObj parameter MQSD.SubCorrelId MQSO_DURABLE or not MQSD.SubUserData MQSD.SelectionString
Subscriptions – two perspectives Price FRUIT Fruit DIS TPSTATUS('Price/Fruit/+') TYPE(SUB) ALLAMQ8754: Display topic status details. TOPICSTR(Price/Fruit/Oranges) SUBID(414D5120544553543120202020202020832AC44720013D07) SUBUSER(hughson) DURABLE(NO) ACTCONN(414D5143544553543120202020202020832AC44720013D05) NUMMSGS(2) SUBTYPE(API) DIS SBSTATUS SUBID(414D5120544553543120202020202020832AC44720AMQ8099: WebSphere MQ subscription status inquired. SUB(Fruit Prices) SUBID(414D5120544553543120202020202020832AC44720013D07) SUBUSER(hughson) ACTCONN(414D5143544553543120202020202020832AC44720013D05) DURABLE(NO) NUMMSGS(5) SUBTYPE(API) Apples Oranges MQSUB ‘Price/Fruit/+’ MQGET
DIS TPSTATUS('Price/Fruit/+') TYPE(SUB) ALL AMQ8754: Display topic status details. TOPICSTR(Price/Fruit/Oranges) SUBID(414D5120544553543120202020202020832AC44720013D07) SUBUSER(hughson) RESMDATE(2008-02-26) RESMTIME(18:53:35) LMSGDATE(2008-02-26) LMSGTIME(18:53:41) DURABLE(NO) ACTCONN(414D5143544553543120202020202020832AC44720013D05) NUMMSGS(2) SUBTYPE(API) AMQ8754: Display topic status details. TOPICSTR(Price/Fruit/Apples) SUBID(414D5120544553543120202020202020832AC44720013D07) SUBUSER(hughson) RESMDATE(2008-02-26) RESMTIME(18:53:35) LMSGDATE(2008-02-26) LMSGTIME(18:53:41) DURABLE(NO) ACTCONN(414D5143544553543120202020202020832AC44720013D05) NUMMSGS(2) SUBTYPE(API) Monitoring your Application subscriptions TOPIC attributes DURSUBSUBSUBSCOPEPROXYSUBWILDCARD Connection ID links to DISPLAY CONN Subscription ID links to DISPLAY SBSTATUSandDISPLAY SUB Price FRUIT Fruit Oranges Apples MQSUB ‘Price/Fruit/+’ MQGET
PUB/SUB API • PUB application • Topic Tree isolation • SUB application • Subscription operation options • Advanced task
OpnOpts = MQOO_OUTPUT | MQOO_FAIL_IF_QUIESCING; MQOPEN( hConn, &ObjDesc, OpnOpts, &hObj, &CompCode, &Reason); MQPUT ( hConn, hObj, &MsgDesc, &pmo, strlen(pBuffer), pBuffer, &CompCode, &Reason); MQOD ObjDesc = {MQOD_DEFAULT}; ObjDesc.ObjectType = MQOT_TOPIC; ObjDesc.Version = MQOD_VERSION_4; ObjDesc.ObjectString.VSPtr = “Price/Fruit/Apples”; ObjDesc.ObjectString.VSLength = MQVS_NULL_TERMINATED; Publishing Application • MQOPEN a topic • MQOD describes a topic to publish to • ObjectType • MQOT_Q for point-to-point • MQOT_TOPIC for publish • ObjectString/ObjectName • MQPUT a message
Market Stalls Starting MQSC for queue manager TEST1. Hursley Discount Price Price strncpy(ObjDesc.ObjectName, “FRUIT.ANCHOR”, MQ_TOPIC_NAME_LENGTH); ObjDesc.ObjectString.VSPtr = “Apples”; ObjDesc.ObjectString.VSLength = MQVS_NULL_TERMINATED; Topic tree isolation DEFINE TOPIC(FRUIT.ANCHOR) TOPICSTR(‘Price/Fruit’) DEFINE TOPIC(FRUIT.ANCHOR) TOPICSTR(‘Market Stalls/Hursley/Discount/Price/Fruit’) FRUIT.ANCHOR Fruit Apples Oranges ?
MQSUB ( hConn, &SubDesc, &hObj, &hSub, &CompCode, &Reason); MQGET ( hConn, hObj, &MsgDesc, &gmo, strlen(pBuffer), pBuffer, &DataLength, &CompCode, &Reason); MQSD SubDesc = {MQSD_DEFAULT}; SubDesc.ObjectString.VSPtr = “Price/Fruit/Apples”; SubDesc.ObjectString.VSLength = MQVS_NULL_TERMINATED; SubDesc.Options = MQSO_CREATE | MQSO_MANAGED | MQSO_FAIL_IF_QUIESCING; Subscribing Application • MQSUB verb • Subscription Descriptor (MQSD) describes the topic • MQSD.ObjectString • MQSD.ObjectName • Consume publications from the returned hObj • when MQSO_MANAGED used
Subscription operation options • Operation – choose at least one of • MQSO_CREATE • MQSO_RESUME • MQSO_ALTER • Combining them • MQSO_CREATE + MQSO_RESUME • Avoids MQRC_SUB_ALREADY_EXISTS • MQSO_CREATE + MQSO_ALTER
Advanced tasks • Durable subscriptions • Subscription destinations • Wildcards • Subscription expiration • Publication Selection • Retained Publications • Security on the API • Publication Contents • Selection of specific publications
Publish/Subscribe Topologies • WMQ V6 publish/subscribe networks based on hierarchies • All brokers linked in parent/child tree • WMB publish/subscribe networks based on hierarchies of collectives • All systems in a collective are connected to each other (mesh) • Also has "clones" • New product built on hierarchies and clusters • With interoperability to other pub/sub systems through hierarchies • Clusters are built on existing WMQ cluster technology • Cluster can be defined independently of any existing cluster used for queuing • Behaves in a similar way to WMB collective • Design gives • Scalability • Availability • Ease of administration
Hierarchies • Similar to WMQ v6 hierarchies • Interoperable with them • Very scalable • Network split if middle qmgr fails • Highly available hub and spokes • Definitions • QMB – ALTER QMGR PARENT(QMA) • QMC – ALTER QMGR PARENT(QMA) • QMD – ALTER QMGR PARENT(QMC) • No child attribute specified on parent • Channels must exist • Transmit queues of same name as remote queue manager • Uses TOPIC objects • No cluster topics required • Be careful using clusters as hierarchy transport • ALTER QMGR PSMODE(ENABLED) PSUB QMB QMA PSUB QMA QMC QMB SUB(/global/sports/*) PSUB QMC QMD PUB(/global/sports/football/news)
Pub/Sub Clusters • Similar to WebSphere Message Broker Collectives • Availability – Direct links between qmgrs • Benefits of traditional clusters • Simplified administration • Useful for Pub/Sub Clusters • Non-disruptive add/remove of qmgrs • Workload balancing • NOT useful for Pub/Sub Clusters • Cluster channels • Same CLUSSDR/CLUSRCVR model • Flexible connectivity • All to all connectivity • Overlapping clusters • No Pub/Sub through gateway queue managers • Use Hierarchies for linking Pub/Sub Clusters • Cluster topics • Required for publishing to remote Pub/Sub Cluster queue managers • Cluster queues • Can be used in traditional way in a Pub/Sub Cluster PUB SUB SUB SUB
Publish/Subscribe in Combined Hierarchy & Clusters QM QM QM QM QM QM QM QM QM QM QM QM QM
More Information about Pub/Sub • Info center: Publish⁄Subscribe User's Guide • Developerwork article: http://www.ibm.com/developerworks/cn/websphere/library/techarticles/0904_xuran_mq/
New Feature Pub/Sub engine Avaiable on zos Enhanced Admin Native MQ pub/sub API ADMIN Topic string/Topic Tree Topic,Subsription object Dis tpstatus, Dis conn Topology Hierarchies Cluster Summary – Pub/Sub with WebSphere MQ V7 • Concept • What’s pub/sub • API • Pub application • Topic tree isolation • Sub application