MQSeries Intercommunications
MQSeries Intercommunications
Intercommunication
SC33-1872-03
MQSeries® IBM
Intercommunication
SC33-1872-03
Note!
Before using this information and the product it supports, be sure to read the general information under “Appendix E.
Notices” on page 641.
iv MQSeries Intercommunication
Running channels and listeners as trusted Configuring an invokable TP . . . . . . . 179
applications . . . . . . . . . . . . . 121 What next? . . . . . . . . . . . . . 181
What next? . . . . . . . . . . . . . . 122 Establishing a TCP connection. . . . . . . . 181
What next? . . . . . . . . . . . . . 181
Chapter 10. Setting up communication Establishing a NetBIOS connection . . . . . . 181
for OS/2 and Windows NT . . . . . . 123 Establishing an SPX connection . . . . . . . 182
IPX/SPX parameters . . . . . . . . . . 182
Deciding on a connection . . . . . . . . . 123
SPX addressing . . . . . . . . . . . . 183
Defining a TCP connection . . . . . . . . . 124
Receiving on SPX . . . . . . . . . . . 183
Sending end . . . . . . . . . . . . . 124
MQSeries for Windows NT configuration . . . . 184
Receiving on TCP . . . . . . . . . . . 124
Default configuration . . . . . . . . . . 184
Defining an LU 6.2 connection . . . . . . . 126
Basic configuration . . . . . . . . . . 184
Sending end for OS/2 . . . . . . . . . 127
Channel configuration . . . . . . . . . 185
Sending end for Windows NT . . . . . . . 127
Automatic startup . . . . . . . . . . . 189
Receiving on LU 6.2 . . . . . . . . . . 127
Running channels as processes or threads . . . 189
Defining a NetBIOS connection . . . . . . . 128
Defining the MQSeries local NetBIOS name . . 129
Establishing the queue manager NetBIOS Chapter 13. Setting up communication
session, command, and name limits . . . . . 130 in UNIX systems . . . . . . . . . . 191
Establishing the LAN adapter number . . . . 130 Deciding on a connection . . . . . . . . . 191
Initiating the connection . . . . . . . . . 130 Defining a TCP connection . . . . . . . . . 191
Target listener . . . . . . . . . . . . 131 Sending end . . . . . . . . . . . . . 191
Defining an SPX connection . . . . . . . . 131 Receiving on TCP . . . . . . . . . . . 192
Sending end . . . . . . . . . . . . . 131 Defining an LU 6.2 connection . . . . . . . 194
Receiving on SPX . . . . . . . . . . . 132 Sending end . . . . . . . . . . . . . 195
IPX/SPX parameters . . . . . . . . . . 133 Receiving on LU 6.2 . . . . . . . . . . 195
Contents v
Explanation of terms . . . . . . . . . . 222 Receiving channels using Cisco MultiNet for
Establishing a session using HP SNAplus2 . . . 223 OpenVMS . . . . . . . . . . . . . 279
SNAplus2 configuration . . . . . . . . . 223 Receiving channels using Attachmate PathWay
APPC configuration . . . . . . . . . . 227 for OpenVMS . . . . . . . . . . . . 280
HP-UX operation . . . . . . . . . . . 237 Receiving channels using Process Software
What next? . . . . . . . . . . . . . 237 Corporation TCPware . . . . . . . . . 280
Establishing a TCP connection. . . . . . . . 237 Defining an LU 6.2 connection . . . . . . . 281
What next? . . . . . . . . . . . . . 237 SNA configuration. . . . . . . . . . . 281
MQSeries for HP-UX configuration . . . . . . 238 Specifying SNA configuration parameters to
Basic configuration . . . . . . . . . . 238 MQSeries. . . . . . . . . . . . . . 283
Channel configuration . . . . . . . . . 238 Sample MQSeries configuration . . . . . . 284
Problem solving . . . . . . . . . . . 285
Chapter 17. Example configuration - Defining a DECnet Phase IV connection . . . . 285
IBM MQSeries for AT&T GIS UNIX Sending end . . . . . . . . . . . . . 286
Receiving on DECnet Phase IV . . . . . . 286
Version 2.2 . . . . . . . . . . . . 243 Defining a DECnet Phase V connection. . . . . 286
Configuration parameters for an LU 6.2 connection 243
Configuration worksheet . . . . . . . . 243
Explanation of terms . . . . . . . . . . 246
Chapter 20. Setting up communication
Establishing a connection using AT&T GIS SNA in Tandem NSK . . . . . . . . . . 289
Server . . . . . . . . . . . . . . . . 246 Deciding on a connection . . . . . . . . . 289
Defining local node characteristics . . . . . 247 SNA channels . . . . . . . . . . . . . 289
Connecting to a partner node . . . . . . . 249 LU 6.2 responder processes. . . . . . . . 291
Configuring a remote node . . . . . . . . 249 TCP channels . . . . . . . . . . . . . 291
What next? . . . . . . . . . . . . . 251 Communications examples . . . . . . . . . 292
Establishing a TCP connection. . . . . . . . 251 SNAX communications example . . . . . . 292
What next? . . . . . . . . . . . . . 251 ICE communications example . . . . . . . 299
MQSeries for AT&T GIS UNIX configuration . . . 251 TCP/IP communications example . . . . . 303
Basic configuration . . . . . . . . . . 252
Channel configuration . . . . . . . . . 252 Chapter 21. Message channel
planning example for distributed
Chapter 18. Example configuration - platforms . . . . . . . . . . . . . 305
IBM MQSeries for Sun Solaris . . . . 257 What the example shows . . . . . . . . . 305
Configuration parameters for an LU 6.2 connection 257 Queue manager QM1 example . . . . . . 307
Configuration worksheet . . . . . . . . 257 Queue manager QM2 example . . . . . . 308
Explanation of terms . . . . . . . . . . 260 Running the example. . . . . . . . . . . 309
Establishing a connection using SunLink Version Expanding this example . . . . . . . . . 309
9.1 . . . . . . . . . . . . . . . . . 261
SunLink 9.1 base configuration . . . . . . 261 Chapter 22. Example SINIX and
Configuring a PU 2.1 server . . . . . . . 262 DC/OSx configuration files. . . . . . 311
Adding a LAN connection . . . . . . . . 263
Configuration file on bight . . . . . . . . . 312
Configuring a connection to a remote PU . . . 264
Configuration file on forties . . . . . . . . 313
Configuring an independent LU . . . . . . 265
Working configuration files for Pyramid DC/OSx 313
Configuring a partner LU . . . . . . . . 267
Output of dbd command . . . . . . . . 314
Configuring the session mode . . . . . . . 268
Configuring a transaction program . . . . . 269
CPI-C side information . . . . . . . . . 270 Part 4. DQM in MQSeries for
What next? . . . . . . . . . . . . . 271 OS/390 . . . . . . . . . . . . . . 319
Establishing a TCP connection. . . . . . . . 271
What next? . . . . . . . . . . . . . 271
Chapter 23. Monitoring and
MQSeries for Sun Solaris configuration . . . . . 271
Basic configuration . . . . . . . . . . 272 controlling channels on OS/390 . . . 321
Channel configuration . . . . . . . . . 272 The DQM channel control function . . . . . . 321
Using the panels and the commands . . . . . 322
Using the initial panel . . . . . . . . . 322
Chapter 19. Setting up communication
Managing your channels . . . . . . . . . 324
in Digital OpenVMS systems . . . . . 277 Defining a channel . . . . . . . . . . 324
Deciding on a connection . . . . . . . . . 277 Altering a channel definition . . . . . . . 325
Defining a TCP connection . . . . . . . . . 278 Displaying a channel definition . . . . . . 325
Sending end . . . . . . . . . . . . . 278 Displaying information about DQM . . . . . 326
Receiving channels using Compaq (DIGITAL) Deleting a channel definition . . . . . . . 326
TCP/IP services (UCX) for OpenVMS . . . . 278
vi MQSeries Intercommunication
Starting a channel initiator . . . . . . . . 327 Chapter 27. Preparing MQSeries for
Stopping a channel initiator . . . . . . . 328 OS/390 when using CICS . . . . . . 381
Starting a channel listener . . . . . . . . 329 Setting up CICS communication for MQSeries for
Stopping a channel listener . . . . . . . . 329 OS/390 . . . . . . . . . . . . . . . 381
Starting a channel . . . . . . . . . . . 330 Connecting CICS systems . . . . . . . . 381
Testing a channel . . . . . . . . . . . 331 Defining an LU 6.2 connection . . . . . . 382
Resetting message sequence numbers for a Installing the connection. . . . . . . . . 383
channel . . . . . . . . . . . . . . 332 Communications between CICS systems
Resolving in-doubt messages on a channel . . 333 attached to one queue manager . . . . . . 383
Stopping a channel . . . . . . . . . . 334 Defining DQM requirements to MQSeries . . . . 384
Displaying channel status . . . . . . . . 335 Defining MQSeries objects . . . . . . . . . 384
Displaying cluster channels. . . . . . . . 337 Multiple message channels per transmission
queue . . . . . . . . . . . . . . . 384
Chapter 24. Preparing MQSeries for Channel operation considerations . . . . . . 385
OS/390 . . . . . . . . . . . . . . 339
Setting up communication . . . . . . . . . 339 Chapter 28. Message channel
TCP setup . . . . . . . . . . . . . 339 planning example for OS/390 using
APPC/MVS setup . . . . . . . . . . . 341
CICS . . . . . . . . . . . . . . . 387
Defining DQM requirements to MQSeries . . . . 342
Defining MQSeries objects . . . . . . . . . 342
Synchronization queue . . . . . . . . . 343 Chapter 29. Example configuration -
Channel command queues . . . . . . . . 343 IBM MQSeries for OS/390 . . . . . . 395
Channel operation considerations . . . . . . 344 Configuration parameters for an LU 6.2 connection 395
OS/390 Automatic Restart Management (ARM) 344 Configuration worksheet . . . . . . . . 396
Explanation of terms . . . . . . . . . . 398
Chapter 25. Message channel Establishing an LU 6.2 connection . . . . . . 400
planning example for OS/390 . . . . 345 Defining yourself to the network . . . . . . 400
Defining a connection to a partner . . . . . 402
What the example shows . . . . . . . . . 345
What next? . . . . . . . . . . . . . 402
Queue manager QM1 example . . . . . . 346
Establishing an LU 6.2 connection using CICS . . 402
Queue manager QM2 example . . . . . . 347
Defining a connection . . . . . . . . . 402
Running the example. . . . . . . . . . . 349
Defining the sessions . . . . . . . . . . 403
Expanding this example . . . . . . . . . 349
Installing the new group definition . . . . . 404
What next? . . . . . . . . . . . . . 404
Chapter 26. Monitoring and Establishing a TCP connection. . . . . . . . 404
controlling channels in OS/390 with What next? . . . . . . . . . . . . . 405
CICS . . . . . . . . . . . . . . . 351 MQSeries for OS/390 configuration . . . . . . 405
The DQM channel control function . . . . . . 351 Channel configuration . . . . . . . . . 405
CICS regions . . . . . . . . . . . . 352 Defining a local queue . . . . . . . . . 409
Starting DQM panels . . . . . . . . . . 352 Defining a remote queue . . . . . . . . 412
The Message Channel List panel . . . . . . . 353 Defining a sender channel when not using CICS 413
Keyboard functions . . . . . . . . . . 353 Defining a receiver channel when not using
Selecting a channel . . . . . . . . . . 354 CICS . . . . . . . . . . . . . . . 415
Working with channels . . . . . . . . . 354 Defining a sender channel using CICS . . . . 417
Creating a channel . . . . . . . . . . 356 Defining a receiver channel using CICS . . . 418
Altering a channel. . . . . . . . . . . 356
Browsing a channel . . . . . . . . . . 356 Part 5. DQM in MQSeries for
Renaming a channel . . . . . . . . . . 357
Selected menu-bar choice . . . . . . . . 357 AS/400 . . . . . . . . . . . . . . 421
Edit menu-bar choice . . . . . . . . . . 367
View menu-bar choice . . . . . . . . . 371 Chapter 30. Monitoring and
Help menu-bar choice . . . . . . . . . 372 controlling channels in MQSeries for
The channel definition panels . . . . . . . . 372 AS/400 . . . . . . . . . . . . . . 423
Channel menu-bar choice . . . . . . . . 373 The DQM channel control function . . . . . . 423
Help menu-bar choice . . . . . . . . . 373 Operator commands . . . . . . . . . . . 424
Channel settings panel fields . . . . . . . . 374 Getting started . . . . . . . . . . . . . 426
Details of sender channel settings panel . . . 376 Creating objects . . . . . . . . . . . . 426
Details of receiver channel settings panel . . . 377 Creating a channel . . . . . . . . . . . 426
Details of server channel settings panel. . . . 378 | Starting a channel . . . . . . . . . . . . 429
Details of requester channel settings panel. . . 379 Selecting a channel . . . . . . . . . . . 430
Contents vii
Browsing a channel . . . . . . . . . . . 430 Chapter 34. Message channel
Renaming a channel . . . . . . . . . . . 432 planning example for OS/400 . . . . 477
Work with channel status . . . . . . . . . 432 What the example shows . . . . . . . . . 477
Work-with-channel choices . . . . . . . . . 434 Queue manager QM1 example . . . . . . 478
Panel choices . . . . . . . . . . . . . 435 Queue manager QM2 example . . . . . . 480
F6=Create . . . . . . . . . . . . . 435 Running the example. . . . . . . . . . . 482
2=Change . . . . . . . . . . . . . 436 Expanding this example . . . . . . . . . 482
3=Copy . . . . . . . . . . . . . . 436
4=Delete . . . . . . . . . . . . . . 437
5=Display . . . . . . . . . . . . . 437 Part 6. DQM in MQSeries for
8=Work with Status . . . . . . . . . . 437 VSE/ESA . . . . . . . . . . . . . 483
13=Ping . . . . . . . . . . . . . . 437
14=Start . . . . . . . . . . . . . . 437 Chapter 35. Example configuration -
15=End . . . . . . . . . . . . . . 438
16=Reset . . . . . . . . . . . . . . 439
MQSeries for VSE/ESA . . . . . . . 485
17=Resolve . . . . . . . . . . . . . 439 Configuration parameters for an LU 6.2 connection 485
Configuration worksheet . . . . . . . . 485
Explanation of terms . . . . . . . . . . 487
Chapter 31. Preparing MQSeries for Establishing an LU 6.2 connection . . . . . . 488
AS/400 . . . . . . . . . . . . . . 441 Defining a connection . . . . . . . . . 488
Creating a transmission queue. . . . . . . . 441 Defining a session . . . . . . . . . . . 488
Triggering channels . . . . . . . . . . . 443 Installing the new group definition . . . . . 489
Channel programs. . . . . . . . . . . . 445 What next? . . . . . . . . . . . . . 489
Channel states on OS/400 . . . . . . . . . 446 Establishing a TCP connection. . . . . . . . 490
Other things to consider . . . . . . . . . . 447 MQSeries for VSE/ESA configuration . . . . . 490
Undelivered-message queue . . . . . . . 447 Configuring channels. . . . . . . . . . 490
Queues in use . . . . . . . . . . . . 447 Defining a local queue . . . . . . . . . 493
Maximum number of channels . . . . . . 447 Defining a remote queue . . . . . . . . 495
Multiple message channels per transmission Defining a SNA LU 6.2 sender channel . . . . 497
queue . . . . . . . . . . . . . . . 447 Defining a SNA LU6.2 receiver channel. . . . 498
Security of MQSeries for AS/400 objects . . . 447 Defining a TCP/IP sender channel . . . . . 500
System extensions and user-exit programs . . . 448 Defining a TCP receiver channel . . . . . . 501
Contents ix
MQPA_* (Put authority) . . . . . . . . . 629 Glossary of terms and abbreviations 645
MQSID_* (Security identifier) . . . . . . . 629
MQSIDT_* (Security identifier type) . . . . . 630 Bibliography . . . . . . . . . . . . 659
MQTXP_* (Transport retry exit structure
MQSeries cross-platform publications . . . . . 659
identifier). . . . . . . . . . . . . . 630
MQSeries platform-specific publications . . . . 661
MQTXP_* (Transport retry exit version) . . . 630
Softcopy books . . . . . . . . . . . . . 662
MQXCC_* (Exit response) . . . . . . . . 630
BookManager format . . . . . . . . . . 662
MQXPT_* (Transmission protocol type). . . . 630
HTML format . . . . . . . . . . . . 662
MQXR_* (Exit reason) . . . . . . . . . 630
Portable Document Format (PDF) . . . . . 662
MQXR2_* (Secondary exit response) . . . . . 630
PostScript format . . . . . . . . . . . 662
MQXT_* (Exit identifier). . . . . . . . . 631
Windows Help format . . . . . . . . . 662
MQXUA_* (Exit user area) . . . . . . . . 631
MQSeries information available on the Internet . . 662
| MQXWD_* (Exit wait descriptor structure
Related publications . . . . . . . . . . . 662
| identifier). . . . . . . . . . . . . . 631
Programming . . . . . . . . . . . . 662
| MQXWD_* (Exit wait descriptor version) . . . 631
OS/390 . . . . . . . . . . . . . . 662
CICS . . . . . . . . . . . . . . . 662
Appendix C. Queue name resolution 633 OS/400 . . . . . . . . . . . . . . 663
What is queue name resolution? . . . . . . . 635 Digital. . . . . . . . . . . . . . . 663
How queue name resolution works . . . . . 636 SNA . . . . . . . . . . . . . . . 663
SINIX . . . . . . . . . . . . . . . 663
Appendix D. Configuration file stanzas
for distributed queuing . . . . . . . 637 Index . . . . . . . . . . . . . . . 665
x MQSeries Intercommunication
Figures
1. Overview of the components of distributed 43. Resetting channel sequence numbers 332
queuing . . . . . . . . . . . . . . 4 44. Resolving in-doubt messages . . . . . . 333
2. Sending messages . . . . . . . . . . . 5 45. Stopping a channel . . . . . . . . . 334
3. Sending messages in both directions . . . . 6 46. Listing channel connections . . . . . . . 336
4. A cluster of queue managers . . . . . . . 7 47. Displaying channel connections - first panel 337
5. A sender-receiver channel . . . . . . . . 8 48. Displaying channel connections - second
6. A cluster-sender channel . . . . . . . . 8 panel . . . . . . . . . . . . . . 337
7. A requester-server channel . . . . . . . . 9 49. Listing cluster channels . . . . . . . . 338
8. A requester-sender channel. . . . . . . . 9 50. The message channel example for MQSeries
9. Channel initiators and listeners . . . . . . 11 for OS/390 . . . . . . . . . . . . 345
10. Sequence in which channel exit programs are 51. Sample configuration of channel control and
called . . . . . . . . . . . . . . 13 MCA . . . . . . . . . . . . . . 352
11. Passing through intermediate queue managers 14 52. The Message Channel List panel . . . . . 353
12. Sharing a transmission queue . . . . . . 15 53. The Message Channel List panel pull-down
13. Using multiple channels . . . . . . . . 15 menus . . . . . . . . . . . . . . 355
14. The concepts of triggering . . . . . . . 21 54. The Channel pull-down menu . . . . . . 357
15. Queue manager alias . . . . . . . . . 27 55. Sender/server Stop action window . . . . 360
16. Reply-to queue alias used for changing reply 56. Requester/receiver Stop action window 361
location . . . . . . . . . . . . . . 28 57. The Reset Channel Sequence Number action
17. Network diagram showing all channels 30 window . . . . . . . . . . . . . 363
18. Network diagram showing QM-concentrators 32 58. The Resolve Channel action window 364
19. A remote queue definition is used to resolve a 59. An example of a sender channel Display
queue name to a transmission queue to an Channel Status window . . . . . . . . 365
adjacent queue manager . . . . . . . . 38 60. An example of a receiver channel Display
20. The remote queue definition allows a different Channel Status window . . . . . . . . 365
transmission queue to be used . . . . . . 39 61. The Ping action window . . . . . . . . 366
21. Receiving messages directly, and resolving 62. The Exit confirmation secondary window 367
alias queue manager name . . . . . . . 40 63. The Copy action window . . . . . . . 368
22. Three methods of passing messages through 64. The Create action window . . . . . . . 369
your system . . . . . . . . . . . . 41 65. Example of default values during Create for a
23. Separating messages flows . . . . . . . 43 channel . . . . . . . . . . . . . 369
24. Combining message flows on to a channel 44 66. The Delete action window . . . . . . . 370
25. Diverting message streams to another 67. The Find a Channel action window . . . . 370
destination . . . . . . . . . . . . . 45 68. The Include search criteria action window 371
26. Reply-to queue name substitution during PUT 69. The Help pull-down menu . . . . . . . 372
call . . . . . . . . . . . . . . . 47 70. The Help choice pull-down menu. . . . . 373
27. Reply-to queue alias example . . . . . . 49 71. The sender channel settings panel. . . . . 376
28. Distributed queue management model . . . 58 72. The sender channel settings panel - screen 2 376
29. Channel states . . . . . . . . . . . 62 73. The receiver channel settings panel . . . . 377
30. Flows between channel states . . . . . . 63 74. The receiver channel settings panel - screen 2 377
31. What happens when a message cannot be 75. The server channel settings panel . . . . . 378
delivered . . . . . . . . . . . . . 72 76. The server channel settings panel - screen 2 378
32. MQSeries channel to be set up in the example 77. The requester channel settings panel . . . . 379
configuration chapters in this book. . . . . 97 78. The requester channel settings panel - screen
33. Local LU window . . . . . . . . . . 205 2. . . . . . . . . . . . . . . . 379
34. Mode window . . . . . . . . . . . 206 79. CICS LU 6.2 connection definition . . . . 383
35. CPI-C side information file for SunLink 80. Connecting two queue managers in MQSeries
Version 9.0 . . . . . . . . . . . . 271 for OS/390 using CICS . . . . . . . . 387
36. The message channel example for OS/2, 81. Sender settings (1) . . . . . . . . . . 389
Windows NT, and UNIX systems . . . . . 306 82. Sender settings (2) . . . . . . . . . . 390
37. The operations and controls initial panel 322 83. Connection definition (1). . . . . . . . 390
38. Listing channels. . . . . . . . . . . 323 84. Connection definition (2). . . . . . . . 391
39. Starting a system function . . . . . . . 327 85. Connection definition (1). . . . . . . . 391
40. Stopping a function control . . . . . . . 328 86. Connection definition (2). . . . . . . . 392
41. Starting a channel . . . . . . . . . . 330 87. Receiver channel settings (1) . . . . . . 392
42. Testing a channel . . . . . . . . . . 331 88. Receiver channel settings (2) . . . . . . 393
The term “UNIX systems” is used to denote the following UNIX operating
systems:
v AIX
v AT&T GIS UNIX
| v Digital UNIX (Compaq Tru64 UNIX)
v HP-UX
v SINIX and DC/OSx
v Sun Solaris
Throughout this book, the name mqmtop has been used to represent the name of
the base directory where MQSeries is installed on UNIX systems.
v For AIX, the name of the actual directory is /usr/mqm
v For other UNIX systems, the name of the actual directory is /opt/mqm
Changes since the previous edition of the book are marked in the left-hand margin
| with vertical bars.
|
| Changes for this edition (SC33-1872-03)
| This edition of MQSeries Intercommunication includes:
| v Addition of support for MQSeries for AS/400 V5.1.
| v Addition of support for MQSeries for DIGITAL UNIX (Compaq Tru64 UNIX),
| V2.2.1.
| v Addition of support for MQSeries for Tandem NonStop Kernel, V2.2.0.1.
|
Changes for the previous edition (SC33-1872-02)
The previous edition of MQSeries Intercommunication applies to the following
versions and releases of MQSeries products:
v MQSeries for AIX V5.1
v MQSeries for AS/400 V4R2M1
v MQSeries for HP-UX V5.1
v MQSeries for OS/2 Warp V5.1
v MQSeries for OS/390 V2.1
v MQSeries for Sun Solaris V5.1
v MQSeries for VSE/ESA V2.1
v MQSeries for Windows NT V5.1
Major new function supplied with each of these MQSeries products is summarized
below:
v Additional new function and changes in MQSeries for OS/390
– Automatic Restart Manager (ARM).
– TCP OpenEdition® sockets interface.
– Screens in “Chapter 23. Monitoring and controlling channels on OS/390” on
page 321.
v MQSeries queue manager clusters implemented on MQSeries for AIX, HP-UX,
OS/2 Warp, OS/390, Sun Solaris, and Windows NT.
v Using the TCP listener backlog option on UNIX systems.
v Additional new function in MQSeries for AIX, V5.1
– The UDP transport protocol is supported.
– Sybase databases can participate in global units of work.
– Multithreaded channels are supported.
– “Configuration parameters for an LU 6.2 connection” on page 197.
v Additional new function in MQSeries for HP-UX, V5.1
– MQSeries for HP-UX, V5.1 runs on both HP-UX V10.20 and HP-UX V11.0.
– Multithreaded channels are supported.
– Both HP-UX kernel threads and DCE threads are supported.
xx MQSeries Intercommunication
Part 1. Introduction
Chapter 1. Concepts of intercommunication . . . 3 How to send a message to another queue manager 17
What is intercommunication? . . . . . . . . . 3 Defining the channels . . . . . . . . . . 18
How does distributed queuing work? . . . . . 3 Defining the queues . . . . . . . . . . 19
What do we call the components? . . . . . 4 Sending the messages . . . . . . . . . . 20
Components needed to send a message . . . 5 Starting the channel . . . . . . . . . . 20
Components needed to return a message . . . 5 Triggering channels. . . . . . . . . . . . 20
Cluster components . . . . . . . . . . 6 Safety of messages . . . . . . . . . . . . 22
Distributed queuing components . . . . . . . 7 Fast, nonpersistent messages . . . . . . . 22
Message channels. . . . . . . . . . . . 7 Undelivered messages . . . . . . . . . . 23
Sender-receiver channels . . . . . . . . 8
Server-receiver channel . . . . . . . . . 8 Chapter 3. More about intercommunication . . . 25
Cluster-sender channels. . . . . . . . . 8 Addressing information . . . . . . . . . . 25
Requester-server channel . . . . . . . . 9 What are aliases? . . . . . . . . . . . . 25
Requester-sender channel . . . . . . . . 9 Queue name resolution . . . . . . . . . 26
Cluster-receiver channels . . . . . . . . 9 Queue manager alias definitions . . . . . . . 26
Message channel agents . . . . . . . . . 9 Outbound messages - remapping the queue
Transmission queues . . . . . . . . . . 10 manager name . . . . . . . . . . . . 26
Channel initiators and listeners . . . . . . . 10 Outbound messages - altering or specifying the
Channel-exit programs . . . . . . . . . 12 transmission queue . . . . . . . . . . . 27
Dead-letter queues . . . . . . . . . . . . 13 Inbound messages - determining the destination 27
Remote queue definitions. . . . . . . . . . 14 Reply-to queue alias definitions . . . . . . . 28
How to get to the remote queue manager . . . . 14 What is a reply-to queue alias definition? . . . 28
Multi-hopping . . . . . . . . . . . . 14 Reply-to queue name . . . . . . . . . . 29
Sharing channels . . . . . . . . . . . 14 Networks . . . . . . . . . . . . . . . 29
Using different channels . . . . . . . . . 15 Channel and transmission queue names . . . . 29
Using clustering . . . . . . . . . . . . 16 Network planner . . . . . . . . . . . 31
Note: Some references are made to individual MQSeries products. Details are
given only for the products that this edition of the book applies to (see the
edition notice for information about which MQSeries products these are).
2 MQSeries Intercommunication
Chapter 1. Concepts of intercommunication
This chapter introduces the concepts of intercommunication in MQSeries.
v The basic concepts of intercommunication are explained in “What is
intercommunication?”
v The objects that you need for intercommunication are described in “Distributed
queuing components” on page 7.
What is intercommunication?
In MQSeries, intercommunication means sending messages from one queue
manager to another. The receiving queue manager could be on the same machine
or another; nearby or on the other side of the world. It could be running on the
same platform as the local queue manager, or could be on any of the platforms
supported by MQSeries. This is called a distributed environment. MQSeries handles
communication in a distributed environment such as this using Distributed Queue
Management (DQM).
The local queue manager is sometimes called the source queue manager and the
remote queue manager is sometimes called the target queue manager or the partner
queue manager.
M QOPEN
QM1 QM2
M essage
QUEUE S to re
DEFNS
QUEUE
M essage DEFNS
S to re
Transport Service
M o v in g M o v in g
S e r v ic e S e r v ic e
1. An application uses the MQOPEN call to open a queue so that it can put
messages on it.
2. A queue manager has a definition for each of its queues, specifying information
such as the maximum number of messages allowed on the queue.
3. If the messages are destined for a queue on a remote system, the local queue
manager holds them in a message store until it is ready to forward them to the
remote queue manager. This can be transparent to the application.
4. Each queue manager contains communications software called the moving
service component; through this, the queue manager can communicate with
other queue managers.
5. The transport service is independent of the queue manager and can be any one
of the following (depending on the platform):
v Systems Network Architecture Advanced Program-to Program
Communication (SNA APPC)
v Transmission Control Protocol/Internet Protocol (TCP/IP)
v Network Basic Input/Output System (NetBIOS)
v Sequenced Packet Exchange (SPX)
v User-Datagram Protocol (UDP)
4 MQSeries Intercommunication
What is intercommunication?
5. Messages are transmitted between queue managers on a channel. A channel is a
one-way communication link between two queue managers. It can carry
messages destined for any number of queues at the remote queue manager.
Each end of a channel has a separate definition, defining it, for example, as the
sending end or the receiving end. A simple channel consists of a sender channel
definition at the local queue manager and a receiver channel definition at the
remote queue manager. These two definitions must have the same name, and
together constitute one channel.
Each queue manager should have a dead-letter queue. Messages are put on this
queue if, for some reason, they cannot be delivered to their destination.
QM1 QM2
Transmission
Queue
Channel Application
Queues
QM1 QM2
M e ss a g e F lo w
MCA MCA
M e ss a g e F lo w
MCA MCA
Cluster components
| An alternative to the traditional MQSeries network is the use of clusters. Clusters
| are supported on V5.1 of MQSeries for AIX, AS/400, HP-UX, OS/2 Warp, Sun
| Solaris, and Windows NT and MQSeries for OS/390 only.
6 MQSeries Intercommunication
What is intercommunication?
CLUSTER
TO.QM2
QM3
TO.QM3
As with distributed queuing, you use the MQPUT call to put a message to a queue
at any queue manager. You use the MQGET call to retrieve messages from a local
queue.
For further information about clusters, see the MQSeries Queue Manager Clusters
book.
Message channels
Message channels are the channels that carry messages from one queue manager to
another.
Do not confuse message channels with MQI channels. There are two types of MQI
channel, server-connection and client-connection. These are discussed in the
MQSeries Clients book.
The definition of each end of a message channel can be one of the following types:
v Sender
v Receiver
v Server
v Requester
v Cluster sender
v Cluster receiver
Sender-receiver channels
A sender in one system starts the channel so that it can send messages to the other
system. The sender requests the receiver at the other end of the channel to start.
The sender sends messages from its transmission queue to the receiver. The
receiver puts the messages on the destination queue.
QM1 QM2
S ess ion Initiation
SENDER RECEIVER
M ess ag e F low
MCA MCA
Tra n s m is s io n
Q ueue
C hannel A p p lic a tio n
Q ueues
Server-receiver channel
This is similar to sender-receiver but applies only to fully qualified servers, that is
server channels that have the connection name of the partner specified in the
channel definition. Channel startup must be initiated at the server end of the link.
The illustration of this is similar to the illustration in Figure 5.
Cluster-sender channels
In a cluster, each queue manager has a cluster-sender channel on which it can send
cluster information to one of the repository queue managers. Queue managers can
also send messages to other queue managers on cluster-sender channels.
QM1 QM2
TO.QM2
MCA MCA
Message
Flow Application
Queues
SYSTEM.
CLUSTER.
TRANSMIT.
QUEUE
8 MQSeries Intercommunication
Distributed queuing components
Requester-server channel
A requester in one system starts the channel so that it can receive messages from
the other system. The requester requests the server at the other end of the channel
to start. The server sends messages to the requester from the transmission queue
defined in its channel definition.
A server channel can also initiate the communication and send messages to a
requester, but this applies only to fully qualified servers, that is server channels that
have the connection name of the partner specified in the channel definition. A fully
qualified server may either be started by a requester, or may initiate a
communication with a requester.
QM1 QM2
Message Flow
MCA MCA
Transmission
Queue
Channel Application
Queues
Requester-sender channel
The requester starts the channel and the sender terminates the call. The sender
then restarts the communication according to information in its channel definition
(this is known as callback). It sends messages from the transmission queue to the
requester.
QM1 QM2
S ess ion Initi ati on
M ess ag e F low
MCA MCA
Tr a n s m i s s i o n
Q ueue
Application
Channel
Q ueues
Cluster-receiver channels
In a cluster, each queue manager has a cluster-receiver channel on which it can
receive messages and information about the cluster. The illustration of this is
similar to the illustration in Figure 6 on page 8.
A message channel agent is called a caller MCA if it initiated the communication or,
otherwise, is called a responder MCA. A caller MCA may be associated with a
sender, server (fully qualified), or requester channel. A responder MCA, may be
associated with any type of message channel.
Transmission queues
A transmission queue is a special type of local queue used to store messages
temporarily before they are transmitted by the MCA to the remote queue manager.
In a distributed-queuing environment, you need to define one transmission queue
for each sending MCA.
You specify the name of the transmission queue in a remote queue definition, (see
“Remote queue definitions” on page 14). If you do not specify the name, the queue
manager looks for a transmission queue with the same name as the remote queue
manager.
You can specify the name of a default transmission queue for the queue manager.
This is used if you do not specify the name of the transmission queue, and a
transmission queue with the same name as the remote queue manager does not
exist.
Figure 9 on page 11 shows how channel initiators and channel listeners are used.
10 MQSeries Intercommunication
Distributed queuing components
SESSION
REQUEST
CHANNEL
LISTENER QM2
QM1
START
MCA MCA
Transmission
Queue
Channel
Initiation CHANNEL
Queue INITIATOR
The channel initiator is also required for other functions, discussed later in this
book.
Channel-exit programs
If you want to do some additional processing (for example, encryption or data
compression) you can write your own channel-exit programs, or sometimes use
SupportPacs. The Transaction Processing SupportPacs library for MQSeries is
available on the Internet at: > >
http://www.ibm.com/software/ts/mqseries/txppacs/
12 MQSeries Intercommunication
Distributed queuing components
QM1 QM2
MCA MCA
Transmission
Queue
SECURITY SECURITY Application
Queues
MESSAGE MESSAGE
SEND RECEIVE
The message-retry exit is used to determine how many times the receiving MCA will
attempt to put a message to the destination queue before taking alternative action.
This exit program is described in “MQ_CHANNEL_EXIT - Channel exit” on
page 546. It is not supported on MQSeries for Windows.
For more information about channel exits, see “Chapter 36. Channel-exit programs”
on page 505.
Dead-letter queues
The dead-letter queue (or undelivered-message queue) is the queue to which
messages are sent if they cannot be routed to their correct destination. Messages
are put on this queue when they cannot be put on the destination queue for some
reason (for example, because the queue does not exist, or because it is full).
Dead-letter queues are also used at the sending end of a channel, for
data-conversion errors.
We recommend that you define a dead-letter queue for each queue manager. If you
do not, and the MCA is unable to put a message, it is left on the transmission
queue and the channel is stopped.
However, using dead-letter queues can affect the sequence in which messages are
delivered, and so you may choose not to use them.
There are other uses for remote queue definitions, which will be described later.
Multi-hopping
If there is no direct communication link between the source queue manager and
the target queue manager, it is possible to pass through one or more intermediate
queue managers on the way to the target queue manager. This is known as a
multi-hop.
You need to define channels between all the queue managers, and transmission
queues on the intermediate queue managers. This is shown in Figure 11.
Sharing channels
As an application designer, you have the choice of 1) forcing your applications to
specify the remote queue manager name along with the queue name, or 2) creating
a remote queue definition for each remote queue to hold the remote queue manager
name, the queue name, and the name of the transmission queue. Either way, all
messages from all applications addressing queues at the same remote location have
14 MQSeries Intercommunication
Getting to remote queue manager
their messages sent through the same transmission queue. This is shown in
Figure 12.
QM1 QM2
Transmission
Queue
Channel Application
Queues
To set up a second channel you need to define another channel and another
transmission queue, and create a remote queue definition specifying the location
and the transmission queue name. Your applications can then use either channel
but the messages will still be delivered to the same target queues. This is shown in
Figure 13.
QM1 QM2
Message Flow
MCA MCA
Transmission Application
Queue Queue
Channels
Message Flow
MCA MCA
Transmission Application
Queue Queue
When you use remote queue definitions to specify a transmission queue, your
applications must not specify the location (that is, the destination queue manager)
themselves. If they do, the queue manager will not make use of the remote queue
definitions. Remote queue definitions make the location of queues and the
transmission queue transparent to applications. Applications can put messages to a
Using clustering
Every queue manager within a cluster defines a cluster-receiver channel and when
another queue manager wants to send a message to that queue manager, it defines
the corresponding cluster-sender channel automatically. For example, if there is
more that one instance of a queue in a cluster, the cluster-sender channel could be
defined to any of the queue managers that host the queue. MQSeries uses a
workload management algorithm that uses a round-robin routine to select the best
queue manager to route a message to. For more information about this, see the
MQSeries Queue Manager Clusters book.
16 MQSeries Intercommunication
Chapter 2. Making your applications communicate
This chapter provides more detailed information about intercommunication
between MQSeries products. Before reading this chapter it is helpful to have an
understanding of channels, queues, and the other concepts introduced in
“Chapter 1. Concepts of intercommunication” on page 3.
You also need to have the correct MQSeries security authorization (except on
MQSeries for Windows) to create the objects required.
You can use several different methods to define these objects, depending on your
MQSeries platform:
OS/390 or MVS/ESA
If you are using native OS/390 communications, you can use the
Operation and Control panels or information from the MQSeries Command
Reference book. If you are using CICS for distributed queuing, you must
use the supplied CICS application CKMC for channels.
The different methods are described in more detail in the platform-specific parts of
this book.
18 MQSeries Intercommunication
Sending messages
On the target queue manager
Define a channel with a channel type of RECEIVER, and the same name as
the sender channel.
Specify the name of the communication protocol you are using (the
TRPTYPE attribute). For V5.1 of MQSeries for AIX, AS/400, HP-UX, OS/2
Warp, Sun Solaris, and Windows NT, and MQSeries for Windows, you do
not have to specify this. You can leave it to pick up the value from your
default channel definition. On MQSeries for Windows the protocol must be
TCP. If you are using CICS to define a channel, you cannot specify
TRPTYPE. Instead you should accept the defaults provided. On MQSeries
for VSE/ESA, you can choose T (TCP) or U (UDP) on the Maintain
Channel Definition menu.
Note that other than on MQSeries for Windows, receiver channel
definitions can be generic. This means that if you have several queue
managers communicating with the same receiver, the sending channels can
all specify the same name for the receiver, and one receiver definition will
apply to them all.
When you have defined the channel, you can test it using the PING CHANNEL
command. This command (which is not supported on MQSeries for Windows)
sends a special message from the sender channel to the receiver channel and
checks that it is returned.
| On OS/390 you should also define a process if you want your channels to
| be triggered automatically. (See “Triggering channels”.)
| On the target queue manager
| v Local queue definition
| The target queue. The name of this queue must be the same as that
| specified in the remote queue name field of the remote queue definition
| on the source queue manager.
| v Dead-letter queue definition—recommended (not applicable to MQSeries
| for Windows)
| Define a dead-letter queue to which undelivered messages can be
| written.
Because the two ends of the channel are on different queue managers, they could
have been defined with different attributes. To resolve any differences, there is an
initial data negotiation between the two ends when the channel starts. In general,
the two ends of the channel agree to operate with the attributes needing the fewer
resources, thus enabling larger systems to accommodate the lesser resources of
smaller systems at the other end of the message channel.
The sending MCA splits large messages before sending them across the channel.
They are reassembled at the remote queue manager. This is transparent to the user.
Triggering channels
This explanation is intended as an overview of triggering concepts. You can find a
complete description in the MQSeries Application Programming Guide.
20 MQSeries Intercommunication
Triggering channels
Local program
Local or 1. 5. started by
Transmission queue trigger monitor
MCA
puts message or
message retrieved MCA started by
on queue 2. trigger message channel initiator
Initiation queue
3.
trigger Program
message
retrieved
Channel
initiator
(Long 4. Queue server started
running)
The objects required for triggering are shown in Figure 14. It shows the following
sequence of events:
1. The local queue manager places a message from an application or from a
message channel agent (MCA) on the transmission queue.
2. When the triggering conditions are fulfilled, the local queue manager places a
trigger message on the initiation queue.
3. The long-running channel initiator program monitors the initiation queue, and
retrieves messages as they appear.
4. The trigger monitor processes the trigger messages according to information
contained in them. This information may include the channel name, in which
case a special type of trigger monitor called a channel initiator starts the
corresponding MCA.
5. The local application or the MCA, having been triggered, retrieves the
messages from the transmission queue.
Safety of messages
In addition to the usual recovery features of MQSeries, distributed queue
management ensures that messages are delivered properly by using a syncpoint
procedure coordinated between the two ends of the message channel. If this
procedure detects an error, it closes the channel to allow you to investigate the
problem, and keeps the messages safely in the transmission queue until the
channel is restarted.
The use of these functions occurs only in exceptional circumstances because the
channel recovers automatically in most cases.
Every effort is made to deliver fast, nonpersistent messages safely. Unless there is a
problem with the message, such as a data-conversion problem or a message-size
problem, the message is delivered. The safety of an individual message is not
affected by sequence-number problems or problems with other messages in the
same batch.
22 MQSeries Intercommunication
Safety of messages
DESCR(‘>>> description’) +
Specifying >>> as the first characters in the channel description defines the channel
as fast for nonpersistent messages.
Note: If the other end of the channel does not support the option, the channel runs
at normal speed.
Undelivered messages
For information about what happens when a message cannot be delivered, see
“What happens when a message cannot be delivered?” on page 71.
24 MQSeries Intercommunication
Chapter 3. More about intercommunication
This chapter mentions three aliases:
v Remote queue definition
v Queue manager alias definition
v Reply-to queue alias definition
These are all based on the remote queue definition object introduced in “Remote
queue definitions” on page 14.
This discussion does not apply to alias queues. These are described in the MQSeries
Application Programming Guide.
Addressing information
In a single-queue-manager environment, the address of a destination queue is
established when an application opens a queue for putting messages to. Because
the destination queue is on the same queue manager, there is no need for any
addressing information.
In a distributed environment the queue manager needs to know not only the
destination queue name, but also the location of that queue (that is, the queue
manager name), and the route to that remote location (that is, the transmission
queue). When an application puts messages that are destined for a remote queue
manager, the local queue manager adds a transmission header to them before
placing them on the transmission queue. The transmission header contains the
name of the destination queue and queue manager, that is, the addressing
information. The receiving channel removes the transmission header and uses the
information in it to locate the destination queue.
You can avoid the need for your applications to specify the name of the destination
queue manager if you use a remote queue definition. This definition specifies the
name of the remote queue, the name of the remote queue manager to which
messages are destined, and the name of the transmission queue used to transport
the messages.
Queue manager aliases and reply-to queue aliases are created using a
remote-queue definition that has a blank RNAME. These definitions do not define
real queues; they are used by the queue manager to resolve physical queue names,
queue manager names, and transmission queues.
When a remote queue definition exists, no alias definitions are referenced. The
queue name supplied by the application is resolved to the name of the destination
queue, the remote queue manager, and the transmission queue specified in the
remote queue definition. For more detailed information about queue name
resolution, see “Appendix C. Queue name resolution” on page 633.
If the resolved queue name is not a local queue, both the queue manager name
and the queue name are included in the transmission header of each message put
by the application to the transmission queue.
The transmission queue used usually has the same name as the resolved queue
manager, although this may be changed by a remote queue definition or a queue
manager alias definition. If you have not defined a transmission queue with the
name of the resolved queue manager and there is no transmission queue defined
by the remote queue definitions or queue manager alias definitions, but you have
defined a default transmission queue, the default transmission queue is used.
This shows that the real queue manager to be used, when an application puts
messages to queue manager YOURQM, is REALQM. If the local queue manager is
REALQM, it puts the messages to the queue THISQ, which is a local queue. If the
26 MQSeries Intercommunication
Queue manager alias definitions
local queue manager is not called REALQM, it routes the message to a
transmission queue called REALQM. The queue manager changes the transmission
header to say REALQM instead of YOURQM.
QM1 QM2
QM3
system system
All messages for ‘QM3’ are captured at ‘QM1’ with a queue manager alias. The
queue manager alias is named ‘QM3’ and contains the definition ‘QM3 via
transmission queue QM2’. The definition looks like this:
DEFINE QREMOTE (QM3) RNAME() RQMNAME(QM3) XMITQ(QM2)
The queue manager puts the messages on transmission queue ‘QM2’ but does not
make any alteration to the transmission queue header because the name of the
destination queue manager, ‘QM3’, does not alter.
Normally an application specifies a reply-to queue and leaves the reply-to queue
manager name blank. The queue manager fills in its own name at put time. This
works well except when you want alternate channels to be used for replies. In this
situation, the queue manager names specified in transmission-queue headers do
not match “real” queue manager names but are re-specified using queue manager
alias definitions. In order to return replies along similar alternate routes, it is
necessary to map reply-to queue data as well, using reply-to queue alias
definitions.
Application
Queue 'Inquiry'
Queue 'Answer'
Figure 16. Reply-to queue alias used for changing reply location
28 MQSeries Intercommunication
Reply-to queue alias definitions
Note that ReplyToQMgr must be blank in order for the reply-to queue alias to
be used.
2. You create a reply-to queue alias definition called ‘Reply_to’, which contains
the name ‘Answer’, and the queue manager name ‘QM1_relief’.
DEFINE QREMOTE ('Reply_to') RNAME ('Answer')
RQMNAME ('QM1_relief')
3. The messages are sent with a message descriptor showing ReplyToQ=‘Answer’
and ReplyToQMgr=‘QM1_relief’.
4. The application specification must include the information that replies are to be
found in queue ‘Answer’ rather than ‘Reply_to’.
To prepare for the replies you have to create the parallel return channel. This
involves defining:
v At QM2, the transmission queue named ‘QM1_relief’
DEFINE QLOCAL ('QM1_relief') USAGE(XMITQ)
v At QM1, the queue manager alias queue ‘QM1_relief’
DEFINE QREMOTE ('QM1_relief') RNAME() RQMNAME(QM1)
This queue manager alias queue terminates the chain of parallel return channels
and captures the messages for QM1.
If you think you might want to do this at sometime in the future, arrange for your
applications to use the alias name from the start. For now this is a normal queue
alias to the reply-to queue, but later it can be changed to a queue manager alias.
The applications now have to retrieve the messages from a different queue from
the one they named as the reply-to queue when they put the original message.
Networks
So far this book has covered creating channels between your system and any other
system with which you need to have communications, and creating multi-hop
channels to systems where you have no direct connections. The message channel
connections described in the scenarios are shown as a network diagram in
Figure 17 on page 30.
For example, at QM2, there is a QM3 channel coming from QM1, and a QM3
channel going to QM3. To make the names unique, the first one may be named
‘QM3_from_QM1’, and the second may be named ‘QM3_from_QM2’. In this way,
the channel names show the transmission queue name in the first part of the name,
and the direction and adjacent queue manager name in the second part of the
name.
QM2
QM 2 fast
QM 1 fast
Q M 1 re lie f Q M 1 re lie f
QM 3 QM 3
Q M 3 re lie f Q M 3 re lie f
Notes:
1. On MQSeries for OS/390, queue manager names are limited to 4 characters.
30 MQSeries Intercommunication
Networks
2. You are strongly recommended to name all the channels in your network
uniquely. As shown in Table 1 on page 30, including the source and target
queue manager names in the channel name is a good way to do this.
Network planner
This chapter has discussed application designer, systems administrator, and
channel planner functions. Creating a network assumes that there is another,
higher level function of network planner whose plans are implemented by the other
members of the team.
In this example there are two main systems and a number of satellite systems (The
actual configuration would depend on business considerations.) There are two
concentrator queue managers located at convenient centers. Each QM-concentrator
has message channels to the local queue managers:
v QM-concentrator 1 has message channels to each of the three local queue
managers, QM1, QM2, and QM3. The applications using these queue managers
can communicate with each other through the QM-concentrators.
v QM-concentrator 2 has message channels to each of the three local queue
managers, QM4, QM5, and QM6. The applications using these queue managers
can communicate with each other through the QM-concentrators.
v The QM-concentrators have message channels between themselves thus allowing
any application at a queue manager to exchange messages with any other
application at another queue manager.
'Q M 2'
'Q M -
'Q M 1' C o nce ntra to r 'Q M 3'
1'
'Q M -
'Q M 4' C o nce ntra to r 'Q M 6'
2'
'Q M 5'
32 MQSeries Intercommunication
Part 2. How intercommunication works
Chapter 4. MQSeries distributed-messaging Stopping and quiescing channels (not MQSeries
techniques . . . . . . . . . . . . . . 35 for Windows). . . . . . . . . . . . . 67
Message flow control . . . . . . . . . . . 35 Stopping and quiescing channels (MQSeries for
Queue names in transmission header . . . . . 36 Windows) . . . . . . . . . . . . . . 68
How to create queue manager and reply-to Restarting stopped channels . . . . . . . . 69
aliases . . . . . . . . . . . . . . . 36 In-doubt channels . . . . . . . . . . . 69
Putting messages on remote queues . . . . . . 37 Problem determination . . . . . . . . . 71
More about name resolution . . . . . . . . 38 Command validation . . . . . . . . . 71
Choosing the transmission queue . . . . . . . 39 Processing problems . . . . . . . . . 71
Receiving messages. . . . . . . . . . . . 40 Messages and codes . . . . . . . . . 71
Receiving alias queue manager names . . . . 40 What happens when a message cannot be
Passing messages through your system . . . . . 41 delivered? . . . . . . . . . . . . . . . 71
Method 1: Using the incoming location name . . 42 Initialization and configuration files . . . . . . 73
Method 2: Using an alias for the queue manager 42 OS/390 without CICS . . . . . . . . . . 73
Method 3: Selecting a transmission queue . . . 42 OS/390 using CICS. . . . . . . . . . . 73
Using these methods . . . . . . . . . . 42 Windows NT . . . . . . . . . . . . . 73
Separating message flows . . . . . . . . . 42 OS/2, Digital OpenVMS, Tandem NSK, OS/400
Concentrating messages to diverse locations . . . 44 and UNIX systems . . . . . . . . . . . 73
Diverting message flows to another destination . . 45 MQSeries configuration file . . . . . . . 74
Sending messages to a distribution list . . . . . 46 Queue manager configuration file . . . . . 74
Reply-to queue . . . . . . . . . . . . . 47 VSE/ESA . . . . . . . . . . . . . . 75
Reply-to queue alias example . . . . . . . 48 Data conversion . . . . . . . . . . . . . 75
Definitions used in this example at QM1 . . 49 Writing your own message channel agents . . . . 75
Definitions used in this example at QM2 . . 50
Put definition at QM1 . . . . . . . . . 50 Chapter 6. Channel attributes. . . . . . . . 77
Put definition at QM2 . . . . . . . . . 50 Channel attributes in alphabetical order . . . . . 77
How the example works . . . . . . . . . 50 Alter date (ALTDATE) . . . . . . . . . . 78
How the queue manager makes use of the Alter time (ALTTIME) . . . . . . . . . . 78
reply-to queue alias. . . . . . . . . . . 51 Auto start (AUTOSTART). . . . . . . . . 78
Reply-to queue alias walk-through . . . . . 51 Batch interval (BATCHINT) . . . . . . . . 79
Networking considerations . . . . . . . . . 52 Batch size (BATCHSZ) . . . . . . . . . . 79
Return routing . . . . . . . . . . . . . 53 Channel name (CHANNEL) . . . . . . . . 80
Managing queue name translations . . . . . . 53 Channel type (CHLTYPE) . . . . . . . . 81
Message sequence numbering . . . . . . . . 54 CICS profile name . . . . . . . . . . . 81
Sequential retrieval of messages . . . . . . 55 Cluster (CLUSTER) . . . . . . . . . . . 81
Sequence of retrieval of fast, nonpersistent Cluster namelist (CLUSNL) . . . . . . . . 82
messages . . . . . . . . . . . . . . 56 Connection name (CONNAME) . . . . . . 82
Loopback testing . . . . . . . . . . . . 56 Convert message (CONVERT) . . . . . . . 83
Description (DESCR) . . . . . . . . . . 84
Chapter 5. DQM implementation . . . . . . . 57 Disconnect interval (DISCINT) . . . . . . . 84
Functions of DQM . . . . . . . . . . . . 57 Heartbeat interval (HBINT) . . . . . . . . 85
Message sending and receiving . . . . . . . . 58 Long retry count (LONGRTY) . . . . . . . 85
Channel parameters . . . . . . . . . . 59 Long retry interval (LONGTMR) . . . . . . 85
Channel status and sequence numbers . . . . 59 LU 6.2 mode name (MODENAME) . . . . . 86
Channel control function . . . . . . . . . . 59 LU 6.2 transaction program name (TPNAME) . . 86
Preparing channels . . . . . . . . . . . 60 Maximum message length (MAXMSGL) . . . . 87
Auto-definition of channels . . . . . . . 60 Maximum transmission size . . . . . . . . 87
Defining other objects . . . . . . . . . 61 Message channel agent name (MCANAME) . . 87
Starting a channel (not MQSeries for Message channel agent type (MCATYPE) . . . 88
Windows) . . . . . . . . . . . . . 61 Message channel agent user identifier
Starting a channel on MQSeries for Windows 61 (MCAUSER) . . . . . . . . . . . . . 88
Channel states . . . . . . . . . . . . 62 Message exit name (MSGEXIT) . . . . . . . 88
Current and active . . . . . . . . . . 62 Message exit user data (MSGDATA) . . . . . 89
Channel errors . . . . . . . . . . . 65 Message-retry exit name (MREXIT) . . . . . 89
Checking that the other end of the channel is Message-retry exit user data (MRDATA) . . . . 89
still available . . . . . . . . . . . . 66 Message retry count (MRRTY) . . . . . . . 89
This part of the book gives more details about how intercommunication works.
The description in this part is general, and is not restricted to a particular platform
or system.
34 MQSeries Intercommunication
Chapter 4. MQSeries distributed-messaging techniques
This chapter describes techniques that are of use when planning channels. It
introduces the concept of message flow control and explains how this is arranged
in distributed queue management (DQM). It gives more detailed information about
the concepts introduced in the preceding chapters and starts to show how you
might use distributed queue management. This chapter covers the following topics:
v “Message flow control”
v “Putting messages on remote queues” on page 37
v “Choosing the transmission queue” on page 39
v “Receiving messages” on page 40
v “Passing messages through your system” on page 41
v “Separating message flows” on page 42
v “Concentrating messages to diverse locations” on page 44
v “Diverting message flows to another destination” on page 45
v “Sending messages to a distribution list” on page 46
v “Reply-to queue” on page 47
v “Networking considerations” on page 52
v “Return routing” on page 53
v “Managing queue name translations” on page 53
v “Message sequence numbering” on page 54
v “Loopback testing” on page 56
You control message flow using a number of techniques that were introduced in
“Chapter 2. Making your applications communicate” on page 17. If your queue
manager is in a cluster, message flow is controlled using different techniques as
described in the MQSeries Queue Manager Clusters book.
This chapter describes how you use your system’s queues, alias queue definitions,
and message channels to achieve message flow control.
| The queue manager and queue objects are described in the MQSeries System
| Administration book for MQSeries for AIX, HP-UX, OS/2 Warp, Sun Solaris, and
| Windows NT, in the MQSeries for AS/400 V5.1 System Administration book for
| MQSeries for AS/400, or in the MQSeries System Management Guide for your
| platform. Message channels are described in “Message channels” on page 7. The
| following techniques use these objects to create message flows in your system:
| v Putting messages to remote queues
| v Routing via particular transmission queues
| v Receiving messages
Note
All the concepts described in this chapter are relevant for all nodes in a
network, and include sending and receiving ends of message channels. For
this reason, only one node is illustrated in most examples, except where the
example requires explicit cooperation by the administrator at the other end of
a message channel.
You will be changing the queue manager part of this queue name when you create
parallel classes of service. Remember to return the queue manager name to the
original name when the end of the class of service diversion has been reached.
36 MQSeries Intercommunication
Message flow control
v Using a remote queue definition to redefine a reply-to queue name.
Each time an application puts a message to a queue, it may provide the name of
a reply-to queue for answer messages but with the queue manager name blank.
If you provide a remote queue definition with the same name as the reply-to
queue then the local queue manager replaces the reply-to queue name with the
queue name from your definition.
You may provide a queue manager name in the definition, but not a
transmission queue name.
Table 2. Three ways of using the remote queue definition object
Usage Queue manager Queue name Transmission
name queue name
1. Remote queue definition (on OPEN call)
Supplied in the call blank or local QM (*) required -
Supplied in the definition required required optional
2. Queue manager alias (on OPEN call)
Supplied in the call (*) required and required -
not local QM
Supplied in the definition required blank optional
3. Reply-to queue alias (on PUT call)
Supplied in the call blank (*) required -
Supplied in the definition optional optional blank
Note: (*) means that this name is the name of the definition object
For a formal description, see “Appendix C. Queue name resolution” on page 633.
A d ja ce n t Lo cal syste m
syste m
A p p lic a tio n 'Q M A '
Q A n o rm a t Q M B v ia Q M B
QA norm
Queue 'Q A n o rm '
Figure 19. A remote queue definition is used to resolve a queue name to a transmission
queue to an adjacent queue manager. Note: The dashed outline represents a remote queue
definition. This is not a real queue, but a name alias that is controlled as though it were a
real queue.
Incoming messages from an adjacent system have already had this type of name
resolution carried out by the original queue manager, and have the transmission
header showing the physical destination queue name and queue manager name.
These messages are unaffected by remote queue definitions.
38 MQSeries Intercommunication
Choosing the transmission queue
QA norm at
QMB priority via TXI
QA nor m
Queue 'Q A n o r m '
Figure 20. The remote queue definition allows a different transmission queue to be used
The channel_back has been left out of this illustration because it would need a
queue manager alias; this is discussed in the following example.
Receiving messages
Q A n o rm
Q ueue 'Q A norm '
C hannel back
Q A n o rm a t Q M B
Figure 21. Receiving messages directly, and resolving alias queue manager name
As well as arranging for messages to be sent, you also arrange for messages to be
received from adjacent queue managers. Received messages contain the physical
name of the destination queue manager and queue in the transmission header.
They are treated exactly the same as messages from a local application that
specifies both queue manager name and queue name. Because of this, you need to
ensure that messages entering your system do not have an unintentional name
resolution carried out. See Figure 21 for this scenario.
40 MQSeries Intercommunication
Passing messages through system
Following on from the technique shown in Figure 21 on page 40, where you saw
how an alias flow is captured, Figure 22 illustrates the ways networks are built up
by bringing together the techniques we have discussed.
You need to pass the first message flow through your system unchanged; the
second message flow through a different transmission queue and channel, while
reverting the messages from the alias queue manager name ‘QMD_norm’ to the
physical location ‘QMD’; and the third message flow simply chooses a different
transmission queue without any other change.
Note
None of the message flows shown in the example changes the destination
queue. The queue manager name aliases simply provide separation of
message flows.
42 MQSeries Intercommunication
Separating message flows
– To create a class of service. For example you could have a cluster called
STAFF that is a subset of the cluster called STUDENTS. When you put a
message to a queue advertised in the STAFF cluster, a restricted channel is
used. When you put a message to a queue advertised in the STUDENTS
cluster, either a general channel or a restricted channel may be used.
– To create test and production environments.
v It may be necessary to route incoming messages via different paths from the
path of the locally generated messages.
v Your installation may require to schedule the movement of messages at certain
times (for example, overnight) and the messages then need to be stored in
reserved queues until scheduled.
QB at QMC small
Channel back Queue 'QMC small'
Application
'QB small'
Queue 'QB small'
QB large
Queue 'QB large'
QB at QMC large
Channel back Queue 'QMC large'
In the example shown in Figure 23, the two incoming flows are to alias queue
manager names ‘QMC_small’ and ‘QMC_large’. You provide these flows with a
queue manager alias definition to capture these flows for the local queue manager.
You have an application addressing two remote queues and you need these
message flows to be kept separate. You provide two remote queue definitions that
specify the same location, ‘QMC’, but specify different transmission queues. This
keeps the flows separate, and nothing extra is needed at the far end as they have
the same destination queue manager name in the transmission headers. You
provide:
v The incoming channel definitions
v The two remote queue definitions QB_small and QB_large
v The two queue manager alias definitions QMC_small and QMC_large
v The three sending channel definitions
v Three transmission queues: TX_small, TX_large, and TX_external
'QMB'
QB at QME
Channel back Queue 'QME'
A pp li ca ti on
QA
Queue 'QA'
QB
Queue 'QB'
'QMC'
Local queue
Queue 'QA'
In this example, messages from different sources, local and adjacent, and having
different destination queues and queue managers, are flowed via transmission
queue ‘TX1’ to queue manager QMC. Queue manager QMC delivers the messages
according to the destinations, one set to a transmission queue ‘QMD’ for onward
44 MQSeries Intercommunication
Concentrating messages
transmission to queue manager QMD, another set to a transmission queue ‘QME’
for onward transmission to queue manager QME, while other messages are put on
the local queue ‘QA’.
You provide:
v Channel definitions
v Transmission queue TX1
v Remote queue definitions:
– QA with ‘QA at QMC via TX1’
– QB with ‘QB at QMD via TX1’
v Queue manager alias definition:
– QME with ‘QME via TX1’
Figure 25 illustrates how you can redefine the destination of certain messages.
Incoming messages to QMA are destined for ‘QB at QMC’. They would normally
arrive at QMA and be placed on a transmission queue called QMC which would
have been part of a channel to QMC. QMA must divert the messages to QMD, but
is able to reach QMD only over QMB. This method is useful when you need to
move a service from one location to another, and allow subscribers to continue to
send messages on a temporary basis until they have adjusted to the new address.
The method of rerouting incoming messages destined for a certain queue manager
to a different queue manager uses:
v A queue manager alias to change the destination queue manager to another
queue manager, and to select a transmission queue to the adjacent system
v A transmission queue to serve the adjacent queue manager
v A transmission queue at the adjacent queue manager for onward routing to the
destination queue manager
You provide:
v Channel_back definition
v Queue manager alias object definition QMC with QB at QMD via QMB
You can use aliases within a clustering environment. For information about this,
see the MQSeries Queue Manager Clusters book.
Not all queue managers support distribution lists. When an MCA establishes a
connection with a partner, it determines whether or not the partner supports
distribution lists and sets a flag on the transmission queue accordingly. If an
application tries to send a message that is destined for a distribution list but the
partner does not support distribution lists, the sending MCA intercepts the
message and puts it onto the transmission queue once for each intended
destination.
A receiving MCA ensures that messages sent to a distribution list are safely
received at all the intended destinations. If any destinations fail, the MCA
establishes which ones have failed so that it can generate exception reports for
them and can try to resend the messages to them.
46 MQSeries Intercommunication
Reply-to queue
Reply-to queue
Queue 'QRR'
The application opens QA at QMB and puts messages on that queue. The messages
are given a reply-to queue name of QR, without the queue manager name being
specified. Queue manager QMA finds the reply-to queue object QR and extracts
from it the alias name of QRR and the queue manager name QMA_class1. These
names are put into the reply-to fields of the messages.
This scenario depicts the way you give applications the facility to choose a class of
service for reply messages, the class being implemented by the transmission queue
QMA_class1 at QMB, together with the queue manager alias definition,
QMA_class1 at QMA. In this way, you can change an application’s reply-to queue
so that the flows are segregated without involving the application. That is, the
application always chooses QR for this particular class of service, and you have the
opportunity to change the class of service with the reply-to queue definition QR.
You create:
v Reply-to queue definition QR
v Transmission queue object QMB
v Channel_out definition
v Channel_back definition
v Queue manager alias definition QMA_class1
v Local queue object QRR, if it does not exist
In this way, you may change the class of service as necessary, without involving
the application, by changing the reply-to alias ‘QR’, together with the transmission
queue ‘QMA_class1’ and queue manager alias ‘QMA_class1’.
If no reply-to alias object is found when the message is put on the queue, the local
queue manager name is inserted in the blank reply-to queue manager name field,
and the reply-to queue name remains unchanged.
Note that the applications must be aware of the naming convention that the name
they use for the reply-to queue is different from the name of the actual queue
where the return messages are to be found.
For example, when two classes of service are provided for the use of applications
with reply-to queue alias names of ‘C1_alias’, and ‘C2_alias’, the applications use
these names as reply-to queue names in the message put calls, but the applications
will actually expect messages to appear in queues ‘C1’ and ‘C2’, respectively.
However, an application is able to make an inquiry call on the reply-to alias queue
to check for itself the name of the real queue it must use to get the reply messages.
As shown in Figure 27 on page 49, the return route must be available for the reply
messages, including the transmission queue, channel, and queue manager alias.
48 MQSeries Intercommunication
Reply-to queue
'QM1' 'QM2'
Queue 'Inquiry'
Q='Answer'
QM='QM1 relief'
Queue 'Answer'
This example is for requester applications at ‘QM1’ that send messages to server
applications at ‘QM2’. The servers’ messages are to be returned through an
alternative channel using transmission queue ‘QM1_relief’ (the default return
channel would be served with a transmission queue ‘QM1’).
The reply-to queue alias is a particular use of the remote queue definition named
‘Answer_alias’. Applications at QM1 include this name, ‘Answer_alias’, in the
reply-to field of all messages that they put on queue ‘Inquiry’.
Server applications at QM2 use the reply-to field of received messages to obtain
the queue and queue manager names for the reply messages to the requester at
QM1.
Object Definition
Local queue Inquiry
Transmission queue QM1_relief
Field Content
Queue name Inquiry
Queue manager name (blank)
Reply-to queue name Answer_alias
Reply-to queue manager (blank)
Field Content
Queue name Answer
Queue manager name QM1_relief
The reply-to queue alias definitions are available for use by the QM1 system
supervisor to change the name of the reply-to queue ‘Answer’, and of the return
route ‘QM1_relief’.
Changing the queue name ‘Answer’ is normally not useful because the QM1
applications are expecting their answers in this queue. However, the QM1
supervisor is able to change the return route (class of service), as necessary.
50 MQSeries Intercommunication
Reply-to queue
How the queue manager makes use of the reply-to queue alias
Queue manager QM1 retrieves the definitions from the reply-to queue alias when
the reply-to queue name, included in the put call by the application, is the same as
the reply-to queue alias, and the queue manager part is blank.
The queue manager replaces the reply-to queue name in the put call with the
queue name from the definition. It replaces the blank queue manager name in the
put call with the queue manager name from the definition.
These names are carried with the message in the message descriptor.
Table 3. Reply-to queue alias
Field name Put call Transmission header
Queue name Answer_alias Answer
Queue manager name (blank) QM1_relief
Networking considerations
In a distributed-queuing environment, because message destinations are addressed
with just a queue name and a queue manager name, the following rules apply:
1. Where the queue manager name is given, and the name is different from the
local queue manager’s name:
v A transmission queue must be available with the same name, and this
transmission queue must be part of a message channel moving messages to
another queue manager, or
v A queue manager alias definition must exist to resolve the queue manager
name to the same, or another queue manager name, and optional
transmission queue, or
v If the transmission queue name cannot be resolved, and a default
transmission queue has been defined, the default transmission queue is used.
2. Where only the queue name is supplied, a queue of any type but with the same
name must be available on the local queue manager. This queue may be a
remote queue definition which resolves to: a transmission queue to an adjacent
queue manager, a queue manager name, and an optional transmission queue.
To see how this works in a clustering environment, see the MQSeries Queue
Manager Clusters book.
Consider the scenario of a message channel moving messages from one queue
manager to another in a distributed-queuing environment.
The messages being moved have originated from any other queue manager in the
network, and some messages may arrive that have an unknown queue manager
name as destination. This can occur when a queue manager name has changed or
has been removed from the system, for example.
The channel program recognizes this situation when it cannot find a transmission
queue for these messages, and places the messages on your undelivered-message
(dead-letter) queue. It is your responsibility to look for these messages and arrange
for them to be forwarded to the correct destination, or to return them to the
originator, where this can be ascertained.
52 MQSeries Intercommunication
Networking considerations
Subsequent use of the various alias possibilities should be used only when
separating and combining message flows.
Return routing
Messages may contain a return address in the form of the name of a queue and
queue manager. This applies in both a distributed-queuing environment and a
clustering environment. This address is normally specified by the application that
creates the message, but may be modified by any application that subsequently
handles the message, including user exit applications.
Irrespective of the source of this address, any application handling the message
may choose to use this address for returning answer, status, or report messages to
the originating application.
The way these response messages is routed is not different from the way the
original message is routed. You need to be aware that the message flows you
create to other queue managers will need corresponding return flows.
This is a likely possibility for name conflict problems that can only be
prevented by a network-wide agreement on physical and logical queue
names.
When you create a queue manager alias definition or a remote queue definition,
the name resolution is carried out for every message carrying that name, regardless
of the source of the message. To oversee this situation, which may involve large
numbers of queues in a queue manager network, you keep tables of:
v The names of source queues and of source queue managers with respect to
resolved queue names, resolved queue manager names, and resolved
transmission queue names, with method of resolution
v The names of source queues with respect to:
– Resolved destination queue names
– Resolved destination queue manager names
– Transmission queues
– Message channel names
Note: The use of the term source in this context refers to the queue name or the
queue manager name provided by the application, or a channel program
when opening a queue for putting messages.
The names in these tables are derived from the examples in this chapter, and this
table is not intended as a practical example of queue name resolution in one node.
Table 4. Queue name resolution at queue manager QMA
Source queue Source queue manager Resolved queue Resolved queue Resolved transmission Resolution type
specified when specified when queue is name manager name queue name
queue is opened opened
QA_norm - QA_norm QMB QMB Remote queue
(any) QMB - - QMB (none)
QA_norm - QA_norm QMB TX1 Remote queue
QB QMC QB QMD QMB Queue manager alias
Local QMGR Queue name for messages Reply-to queue alias name Redefined to
QMA QRR QR QRR at QMA_class1
54 MQSeries Intercommunication
Message sequence numbering
Cooperating channels must be capable of:
v Respecting the sequential delivery attribute in their channel definition record
v Identifying or assigning a sequence number for each message sent or received
v Recording the sequence number assigned to the last message committed, on
hardened media for use in recovery
v Recording the sequence numbers such that they can be read by status
commands for problem resolution
v Detecting out-of-sequence conditions, such as duplicate numbers or gaps, and
returning an appropriate error indication
The sequence number of the last committed message or LUWID is recorded at the
receiving end of a channel. This number is used at the sending end when
sequential delivery of messages has been selected. It is also used during
resequencing, on startup and restarts, to ensure that both ends of the link agree on
which messages have been transferred successfully.
The number stored at the sending end is incremented by one before being used;
this means that the current sequence number is the number of the last message
sent, and the numbering is independent of the instance of the MCA.
Note: Messages from other tasks and units of work may be interspersed with the
sequence, even where the sequence was put from within a single unit of
work.
The order is preserved for remote queuing, but only if the configuration is such
that there can be only one path for the messages in the sequence, from the
application making the put request, through its queue manager, through
intercommunication, to the destination queue manager and the target queue.
Note: Messages that are destined for remote queues can also become out of
sequence if one or more of them is put to a dead-letter queue (for example,
if a queue is temporarily full).
Loopback testing
Loopback testing is a technique on non-OS/390 platforms that allows you to test a
communications link without actually linking to another machine. You set up a
connection between two queue managers as though they are on separate machines,
but you test the connection by looping back to another process on the same
machine. This means that you can test your communications code without
requiring an active network.
The way you do this depends on which products and protocols you are using. For
example the command to allow TCP/IP loopback testing on OS/2 without a
network, is:
ifconfig lo ipaddress
Refer to the documentation for the products you are using for more information.
56 MQSeries Intercommunication
Chapter 5. DQM implementation
This chapter describes the implementation of the concepts introduced in
“Chapter 2. Making your applications communicate” on page 17.
Functions of DQM
Distributed queue management has these functions:
v Message sending and receiving
v Channel control
v Initialization file
v Data conversion
v Channel exits
The MCAs in turn are controlled by DQM itself. The structure is platform
dependent, but typically includes listeners and trigger monitors, together with
operator commands and panels.
A message channel is a one-way pipe for moving messages from one queue manager
to another. Thus a message channel has two end-points, represented by a pair of
MCAs. Each end-point has a definition of its end of the message channel. For
example, one end would define a sender, the other end a receiver.
For information about channel exits, see “Chapter 36. Channel-exit programs” on
page 505.
Operator
Synchronization
Information
File Channel definitions
Status C o mm a nd s
Channel Listener
SENDING Initiator RECEIVING
Messages Messages
Queue Local
Tr i g g e r Queue Initiation
m essag e
Queue Local
Communications
Messages Network Messages
Messages
Notes:
1. There is one MCA per channel, depending on the platform. There may be one
or more channel control functions for a given queue manager.
58 MQSeries Intercommunication
Message sending and receiving
2. The implementation of MCAs and channel control functions is highly platform
dependent; they may be programs or processes or threads, and they may be a
single entity or many comprising several independent or linked parts.
3. All components marked with a star can use the MQI.
Channel parameters
An MCA receives its parameters in one of several ways:
v If started by a command, the channel name is passed in a data area. The MCA
then reads the channel definition directly to obtain its attributes.
v For sender, and in some cases server channels, the MCA can be started
automatically by the queue manager trigger. The channel name is retrieved from
the trigger process definition, where applicable, and is passed to the MCA. The
remaining processing is the same as that described above.
v If started remotely by a sender, server, requester, or client-connection, the
channel name is passed in the initial data from the partner message channel
agent. The MCA reads the channel definition directly to obtain its attributes.
Certain attributes not defined in the channel definition are also negotiable:
Split messages
If one end does not support this, split messages will not be sent.
Conversion capability
If one end cannot perform the necessary code page conversion or numeric
encoding conversion when needed, the other end must handle it. If neither
end supports it, when needed, the channel cannot start.
Distribution list support
If one end does not support distribution lists, the partner MCA sets a flag
in its transmission queue so that it will know to intercept messages
intended for multiple destinations.
Note: For the channel control function on MQSeries for OS/2 Warp, Windows NT,
Windows V2.1, UNIX systems, Digital OpenVMS, and Tandem NSK, you
can use Programmable Command Formats or those MQSeries commands
(MQSC) and control commands that are detailed in “Chapter 8. Monitoring
and controlling channels on distributed platforms” on page 105.
Channel control commands manage the operation of the channels. They enable you
to:
v Start a channel
v Stop a channel
v Re-synchronize with partner (in some implementations)
v Reset message sequence numbers
v Resolve an in-doubt batch of messages
v Ping; send a test communication across the channel (not on MQSeries for
Windows)
Preparing channels
Before trying to start a message channel or MQI channel, you must make sure that
all the attributes of the local and remote channel definitions are correct and
compatible. “Chapter 6. Channel attributes” on page 77 describes the channel
definitions and attributes.
Although you set up explicit channel definitions, the channel negotiations carried
out when a channel starts up may override one or other of the values defined. This
is quite normal, and transparent, and has been arranged like this so that otherwise
incompatible definitions can work together.
Auto-definition of channels
In MQSeries for AIX, AS/400, HP-UX, OS/2 Warp, Sun Solaris, Windows NT, and
OS/390 (cluster-receiver and cluster-sender channels only), if there is no
appropriate channel definition, then for a receiver or server-connection channel
that has auto-definition enabled, a definition is created automatically. The
definition is created using:
1. The appropriate model channel definition, SYSTEM.AUTO.RECEIVER or
SYSTEM.AUTO.SVRCONN. The model channel definitions for auto-definition
are the same as the system defaults, SYSTEM.DEF.RECEIVER and
SYSTEM.DEF.SVRCONN, except for the description field, which is
“Auto-defined by” followed by 49 blanks. The systems administrator can
choose to change any part of the supplied model channel definitions.
2. Information from the partner system. The partner’s values are used for the
channel name and the sequence number wrap value.
3. A channel exit program, which you can use to alter the values created by the
auto-definition. See “Channel auto-definition exit program” on page 516.
60 MQSeries Intercommunication
Channel control function
Once the definition has been created and stored the channel start proceeds as
though the definition had always existed. The batch size, transmission size, and
message size are negotiated with the partner.
For information about MQI channels, see the MQSeries Clients book.
Channel
Inactive Current
62 MQSeries Intercommunication
Channel control function
INACTIVE
Start
channel
START command
or
TRIGGER
or
REMOTE INITIATION
STOPPED or
Disabled CHANNEL INITIATOR
INITIALIZING STARTING
RETRYING
Waiting until time
for next attempt One attempt to
establish session fails
BINDING
Establishing session and
initial data exchange
PAUSED Status
Waiting for OK REQUESTING
message-retry
interval
RUNNING
Transferring or ready
to transfer
STOPPING
Check limits if
retrying
STOP command, Disconnect interval expires
non-retryable error
or retry limit reached
Notes:
| 1. When a channel is in one of the six states highlighted in Figure 30
| (INITIALIZING, BINDING, REQUESTING, RUNNING, PAUSED, or
| STOPPING), it is consuming resource and a process or thread is running; the
| Specifying the maximum number of current channels: You can specify the
| maximum number of channels that can be current at one time. This is the number
| of channels that have entries in the channel status table, including channels that
| are retrying and channels that are disabled (that is, stopped). Specify this in the
| channel initiator parameter module for OS/390, the queue manager initialization
| file for OS/400, the queue manager configuration file for OS/2, Tandem NSK, and
| UNIX systems, or the registry for Windows NT. For more information about the
| values you set using the initialization or the configuration file see “Appendix D.
| Configuration file stanzas for distributed queuing” on page 637. For more
| information about specifying the maximum number of channels, see the MQSeries
| System Administration book for V5.1 of MQSeries for AIX, HP-UX, OS/2 Warp, Sun
| Solaris, and Windows NT, the MQSeries for AS/400 V5.1 System Administration book
| for MQSeries for AS/400, or the MQSeries System Management Guide for your
| platform.
| Notes:
| 1. On MQSeries for AIX, AS/400, HP-UX, OS/2 Warp, OS/390, Sun Solaris, and
| Windows NT, server-connection channels are included in this number.
| 2. A channel must be current before it can become active. If a channel is started,
| but cannot become current, the start fails.
| 3. If you are using CICS for distributed queuing on OS/390, you cannot specify
| the maximum number of channels.
| 4. MQSeries for Windows does not support the qm.ini file. The maximum number
| of current channels and the maximum number of active channels is eight.
| Specifying the maximum number of active channels: You can also specify the
maximum number of active channels (except on MQSeries for OS/390 using CICS
and MQSeries for Windows). You can do this to prevent your system being
overloaded by a large number of starting channels. If you use this method, you
should set the disconnect interval attribute to a low value to allow waiting
channels to start as soon as other channels terminate.
Each time a channel that is retrying attempts to establish connection with its
partner, it must become an active channel. If the attempt fails, it remains a current
channel that is not active, until it is time for the next attempt. The number of times
that a channel will retry, and how often, is determined by the retry count and retry
interval channel attributes. There are short and long values for both these
attributes. See “Chapter 6. Channel attributes” on page 77 for more information.
When a channel has to become an active channel (because a START command has
been issued, or because it has been triggered, or because it is time for another retry
attempt), but is unable to do so because the number of active channels is already
at the maximum value, the channel waits until one of the active slots is freed by
another channel instance ceasing to be active. If, however, a channel is starting
because it is being initiated remotely, and there are no active slots available for it at
that time, the remote initiation is rejected.
64 MQSeries Intercommunication
Channel control function
immediately available, although in this case it will only be in STARTING state for
a very short time. However, if the channel has to wait for an active slot, it is in
STARTING state while it is waiting.
Whenever a channel, other than a requester channel, is unable to get an active slot,
and so waits for one, a message is written to the log or the OS/390 console, and an
event is generated. When a slot is subsequently freed and the channel is able to
acquire it, another message and event are generated. Neither of these events and
messages are generated if the channel is able to acquire a slot straightaway.
On MQSeries for AIX, AS/400, HP-UX, OS/2 Warp, OS/390, Sun Solaris, and
Windows NT, server-connection channels are included in the maximum number of
active channels.
| For more information about specifying the maximum number of active channels,
| see the MQSeries System Administration book for V5.1 of MQSeries for AIX, HP-UX,
| OS/2 Warp, Sun Solaris, and Windows NT, the MQSeries for AS/400 V5.1 System
| Administration book for MQSeries for AS/400, the MQSeries for Windows User’s
| Guide, or the MQSeries System Management Guide for your platform.
Channel errors
Errors on channels cause the channel to stop further transmissions. If the channel
is a sender or server, it goes to RETRY state because it is possible that the problem
may clear itself. If it cannot go to RETRY state, the channel goes to STOPPED state.
For sending channels, the associated transmission queue is set to GET(DISABLED)
and triggering is turned off. (A STOP command takes the side that issued it to
STOPPED state; only expiry of the disconnect interval will make it end normally
and become inactive.) Channels that are in STOPPED state need operator
| intervention before they will restart (see “Restarting stopped channels” on page 69).
| Note: For Digital OpenVMS, OS/2 Warp, OS/400, UNIX systems, Tandem NSK,
| and Windows NT, in order for retry to be attempted a channel initiator must
| be running. On platforms other than V5.1 of MQSeries for AIX, AS/400,
| HP-UX, OS/2 Warp, Sun Solaris, and Windows NT, the channel initiator
| must be monitoring the initiation queue specified in the transmission queue
| that the channel is using. MQSeries for Windows does not have a channel
| initiator; restarts are controlled by the MQSeries properties daemon task
| running in the background.
| “Long retry count (LONGRTY)” on page 85 describes how retrying works. If the
error clears, the channel restarts automatically, and the transmission queue is
reenabled. If the retry limit is reached without the error clearing, the channel goes
to STOPPED state. A stopped channel must be restarted manually by the operator.
If the error is still present, it does not retry again. When it does start successfully,
the transmission queue is reenabled.
On MQSeries for AIX, HP-UX, OS/2 Warp, OS/390 without CICS, Sun Solaris, and
Windows NT, if the channel initiator or queue manager stops while a channel is in
On MQSeries for OS/2 Warp, Windows NT, OS/400, Tandem NSK, and UNIX
systems, if a channel is unable to put a message to the target queue because that
queue is full or put inhibited, the channel can retry the operation a number of
times (specified in the message-retry count attribute) at a given time interval
(specified in the message-retry interval attribute). Alternatively, you can write your
own message-retry exit that determines which circumstances cause a retry, and the
number of attempts made. The channel goes to PAUSED state while waiting for
the message-retry interval to finish.
See “Chapter 6. Channel attributes” on page 77 for information about the channel
attributes, and “Chapter 36. Channel-exit programs” on page 505 for information
about the message-retry exit.
In MQSeries for AIX, AS/400, HP-UX, OS/2 Warp, OS/390 without CICS, Sun
Solaris, VSE/ESA, and Windows NT, if you are using TCP as your transport
protocol, you can use the SO_KEEPALIVE option on the TCP/IP socket. If you
specify this option, TCP periodically checks that the other end of the connection is
still available, and if it is not, the channel is terminated.
In MQSeries for AIX, AS/400, HP-UX, OS/2 Warp, Sun Solaris, and Windows NT,
if you are using TCP as your transport protocol, the receiving end of inactive
connections can also be closed if no data is received for a period of time. This
period of time is determined according to the HBINT (heartbeat interval) value.
66 MQSeries Intercommunication
Channel control function
4. Aborting the connection after twice the heartbeat interval is valid because we
expect flows (data or heartbeat) at least every heartbeat interval. If the
heartbeat interval is set too small, however, problems can occur, especially if
channel exits are in use. For example, if the HBINT value is one second, and a
send or receive exit is used, the receiving end will only wait for two seconds
before aborting the channel. This may not be long enough if the sending MCA
spends a long time in the send exit, perhaps encrypting the message.
If you have unreliable channels that are suffering from TCP errors, use of
SO_KEEPALIVE will mean that your channels are more likely to recover.
You can specify time intervals to control the behavior of the SO_KEEPALIVE
option. When you change the time interval, only TCP/IP channels started after the
change are affected. The value that you choose for the time interval should be less
than the value of the disconnect interval for the channel.
For more information about using the SO_KEEPALIVE option on OS/390, see the
MQSeries for OS/390 System Management Guide. For other platforms, see the chapter
about setting up communications for your platform in this manual.
In this case, an operator command is provided to allow you to stop the channel.
The command provided varies by platform, as follows:
For OS/390 without CICS:
The STOP CHANNEL MQSC command or the Stop a channel panel
For OS/390 using CICS:
The Stop option on the Message Channel List panel
For OS/2, Windows NT, Digital OpenVMS, Tandem NSK, and UNIX systems:
The STOP CHANNEL MQSC or PCF command
| For OS/400:
| ENDMQMCHL or the END option on the WRKMQMCHL panel
For VSE/ESA:
The CLOSE command from the MQMMSC panel or MQCL transaction
closes (rather than stops) the channel.
For all of these commands there is a FORCE and a QUIESCE option. The FORCE
option attempts to stop the channel immediately and may require the channel to
resynchronize when it restarts because the channel may be left in doubt. The
QUIESCE option attempts to end the current batch of messages and then terminate
the channel. Note that both of these options leave the channel in a STOPPED state,
requiring operator intervention to restart it.
Stopping the channel at the sending end is quite effective but does require operator
intervention to restart. At the receiving end of the channel, things are much more
68 MQSeries Intercommunication
Channel control function
v Using the STOP CHANNEL MQSC command or, in Version 2.1, the STOP
CHANNEL PCF command. You can specify a FORCE or QUIESCE option on
this command. Using this command stops just the specified channel and leaves
the queue manager running.
For sender or server channels, when the channel entered the STOPPED state, the
associated transmission queue was set to GET(DISABLED) and triggering was set
off. When the start request is received, these attributes are reset automatically. On
V5.1 of MQSeries for AIX, HP-UX, OS/2 Warp, Sun Solaris, and Windows NT, and
MQSeries for OS/390 without CICS, if the channel initiator or queue manager
stops while a channel is in RETRYING or STOPPED status, the channel status is
remembered when the channel initiator or queue manager is restarted. On other
platforms (apart from MQSeries for Windows), if the channel initiator or queue
manager is restarted the status is lost and you have to alter the queue attributes
manually to reenable triggering of the channel.
Note: If you are using CICS for distributed queuing on OS/390, these queue
attributes are not reset automatically; you always have to alter them
manually when you restart a channel.
In-doubt channels
Observe the distinction between a channel being in doubt, which means that it is
in doubt with its partner channel about which messages have been sent and
received, and the queue manager being in doubt about which messages should be
committed to a queue.
You can use the CONNAME and XMITQ parameters to further identify the
channel.
v For the receiving side of the channel:
DISPLAY CHSTATUS(name) SAVED LSTLUWID
You can use the CONNAME parameter to further identify the channel.
The commands are different because only one side (the sending side) of the
channel can be in doubt. The receiving side is never in doubt.
70 MQSeries Intercommunication
Channel control function
Once this process is complete the channel will no longer be in doubt. This means
that, if required, the transmission queue can be used by another channel.
Problem determination
There are two distinct aspects to problem determination:
v Problems discovered when a command is being submitted
v Problems discovered during operation of the channels
Command validation
Commands and panel data must be free from errors before they are accepted for
processing. Any errors found by the validation are immediately notified to the user
by error messages.
Problem diagnosis begins with the interpretation of these error messages and
taking the recommended corrective action.
Processing problems
Problems found during normal operation of the channels are notified to the system
console or the system log or, for MQSeries for Windows, the channel log. Problem
diagnosis begins with the collection of all relevant information from the log, and
continues with analysis to identify the problem.
Confirmation and error messages are returned to the terminal that initiated the
commands, when possible.
MQPUT
Me s s a g e F l o w Transient Failure
MCA MCA
Retry Exit
Transmission
Queue
RTS Application
Queue
2 3
Transmission
Queue Dead Letter
Queue
DLQ Handler
As shown in the figure, the MCA can do several things with a message that it
cannot deliver. The action taken is determined by options specified when the
channel is defined and on the MQPUT options for the message.
1. Message-retry
If the MCA is unable to put a message to the target queue for a reason that
could be transitory (for example, because the queue is full), the MCA has
the option to wait and retry the operation later. You can determine if the
MCA waits, for how long, and how many times it retries.
v You can specify a message-retry time and interval for MQPUT errors
when you define your channel. If the message cannot be put to the
destination queue because the queue is full, or is inhibited for puts, the
MCA retries the operation the number of times specified, at the time
interval specified.
v You can write your own message-retry exit. The exit enables you to
specify under what conditions you want the MCA to retry the MQPUT
or MQOPEN operation. Specify the name of the exit when you define
the channel.
72 MQSeries Intercommunication
Undelivered messages
v The MQRO_DISCARD_MSG report option
v The name of the reply-to queue and reply-to queue manager
Windows NT
On MQSeries for Windows NT, the registry file holds basic configuration
information about the MQSeries installation. That is, information relevant to all of
the queue managers on the MQSeries system and also information relating to
individual queue managers.
The queue manager configuration file is held in the root of the directory tree
occupied by the queue manager. On MQSeries for Windows NT, the qm.ini file is
held in the registry. For example, for the DefaultPath attributes, the queue manager
configuration files for a queue manager called QMNAME would be:
For OS/2:
c:\mqm\qmgrs\QMNAME\qm.ini
The file is held in the subvolume of the queue manager. For example, the path and
name for a configuration file for a queue manager called QMNAME could be
$VOLUME.QMNAMED.QMINI.
An excerpt of a qm.ini file follows. It specifies that the TCP/IP listener is to listen
on port 2500, the maximum number of current channels is to be 200 and the
maximum number of active channels is to be 100.
TCP:
Port=2500
CHANNELS:
MaxChannels=200
MaxActiveChannels=100
| Note: For Tandem NSK, the format of the qm.ini file is slightly different. For more
| details about this, see the MQSeries for Tandem NonStop Kernel System
| Management Guide.
| For OS/400:
| /QIBM/UserData/mqm/qmgrs/QMNAME/qm.ini
74 MQSeries Intercommunication
Initialization and configuration files
| For more information about qm.ini files see “Appendix D. Configuration file
stanzas for distributed queuing” on page 637. For more information about QMINI
files see the MQSeries for Tandem NonStop Kernel System Management Guide.
VSE/ESA
There is no qm.ini file on VSE/ESA. Instead, use the Configuration main menu on
the MQMMCFG panel to configure the queue manager.
Data conversion
An MQSeries message consists of two parts:
v Control information in a message descriptor
v Application data
Either of the two parts may require data conversion when sent between queues on
different queue managers. For information about data conversion, see the MQSeries
Application Programming Guide.
If you decide to use an MCA that was not supplied by MQSeries, you need to
consider the following.
Message sending and receiving
You need to write a sending application that gets messages from wherever
your application puts them, for example from a transmission queue (see
the MQSeries Application Programming Reference book), and sends them out
on a protocol with which you want to communicate. You also need to
write a receiving application that takes messages from this protocol and
puts them onto destination queues. The sending and receiving applications
use the message queue interface (MQI) calls, not any special interfaces.
You need to ensure that messages are delivered once and once only.
Syncpoint coordination can be used to help with this.
Channel control function
You need to provide your own administration functions to control
channels. You cannot use MQSeries channel administration functions either
for configuring (for example, the DEFINE CHANNEL command) or
monitoring (for example, DISPLAY CHSTATUS) your channels.
Initialization file
You need to provide your own initialization file, if you require one.
Application data conversion
You will probably want to allow for data conversion for messages you
send to a different system. If so, use the MQGMO_CONVERT option on
the MQGET call when retrieving messages from wherever your application
puts them, for example the transmission queue.
76 MQSeries Intercommunication
Chapter 6. Channel attributes
The previous chapters have introduced the basic concepts of the product, the
business perspective basis of its design, its implementation, and the control
features.
This chapter describes the channel attributes held in the channel definitions. This is
product-sensitive programming interface information.
Many attributes have default values, and you can use these for most channels.
However, in those circumstances where the defaults are not optimal, refer to this
chapter for guidance in selecting the correct values.
The keyword that you can specify in MQSC is shown in brackets for each attribute.
(Attributes that apply only to MQSeries for OS/390 with CICS do not have MQSC
keywords.)
| This parameter is supported on AIX, HP-UX, OS/2 Warp, OS/390, OS/400, Sun
| Solaris, and Windows NT only.
| This parameter is supported on AIX, HP-UX, OS/2 Warp, OS/390, OS/400, Sun
| Solaris, and Windows NT only.
78 MQSeries Intercommunication
Auto start (AUTOSTART)
SNA channels defined AUTOSTART(DISABLED) do not listen for incoming SNA
requests. LU 6.2 responder processes are not started for such channels.
If you do not specify a batch interval, the batch closes when the number of
messages specified in BATCHSZ has been sent or when the transmission queue
becomes empty. On lightly loaded channels, where the transmission queue
frequently becomes empty the effective batch size may be much smaller than
BATCHSZ.
You can use the BATCHINT attribute to make your channels more efficient by
reducing the number of short batches. Be aware, however, that you may slow
down the response time, because batches will last longer and messages will remain
uncommitted for longer.
If you specify a BATCHINT, batches close only when one of the following
conditions is met:
v The number of messages specified in BATCHSZ have been sent.
v There are no more messages on the transmission queue and a time interval of
BATCHINT has elapsed while waiting for messages (since the first message of
the batch was retrieved).
Note: BATCHINT specifies the total amount of time that is spent waiting for
messages. It does not include the time spent retrieving messages that are
already available on the transmission queue, or the time spent transferring
messages.
To improve performance, you can set a batch size to define the maximum number
of messages to be transferred between two syncpoints. The batch size to be used is
negotiated when a channel starts up, and the lower of the two channel definitions
is taken. On some implementations, the batch size is calculated from the lowest of
the two channel definitions and the two queue manager
MAXUMSGS/MAXSMSGS values. The actual size of a batch can be less than this;
for example, a batch completes when there are no messages left on the
transmission queue or the batch interval expires.
| A large value for the batch size increases throughput, but recovery times are
| increased because there are more messages to back out and resend. The default
Where possible, channel names should be unique to one channel between any two
queue managers in a network of interconnected queue managers.
Alphabetic (A-Z, a-z; note that uppercase and lowercase are significant)
Numerics (0-9)
Period (.)
Forward slash (/)
Underscore (_)
Percentage sign (%)
80 MQSeries Intercommunication
Channel name (CHANNEL)
Notes:
1. Embedded blanks are not allowed, and leading blanks are ignored.
2. On systems using EBCDIC Katakana, you cannot use lowercase characters.
The two ends of a channel must have the same name and have compatible types:
v Sender with receiver
v Requester with server
v Requester with sender (for Call_back)
v Server with receiver (server is used as a sender)
v Client-connection with server-connection
v Cluster-sender with cluster-receiver
The name must be known to CICS and be one to eight alphanumeric characters
long.
Cluster (CLUSTER)
The name of the cluster to which the channel belongs. The maximum length is 48
characters conforming to the rules for naming MQSeries objects.
| This parameter is supported on AIX, HP-UX, OS/2 Warp, OS/390 without CICS,
| OS/400, Sun Solaris, and Windows NT only.
| This parameter is supported on AIX, HP-UX, OS/2 Warp, OS/390 without CICS,
| OS/400, Sun Solaris, and Windows NT only.
For OS/390 using CICS this attribute names the CICS communication connection
identifier for the session to be used for this channel. The name is one to four
alphanumeric characters long.
Otherwise, the name is up to 48 characters for OS/390, 264 characters for other
platforms, and:
If the transport type is TCP
This is either the hostname or the network address of the remote machine.
For example, (MACH1.ABC.COM) or (19.22.11.162). It may include the port
number, for example (MACHINE(123)).
If the transport type is UDP
For MQSeries for AIX and MQSeries for Windows V2.0 only, UDP is an
alternative to TCP. As with TCP/IP, it is either the hostname or the
network address of the remote machine.
If the transport type is LU 6.2
| For Version 5.1 of MQSeries for OS/2, OS/400, Windows NT, and UNIX
| systems, give the fully-qualified name of the partner LU if the TPNAME
| and MODENAME are specified. For other versions or if the TPNAME and
| MODENAME are blank, give the CPI-C side information object name as
| described in the section in this book about setting up communication for
| your platform.
On OS/390 there are two forms in which to specify the value:
v Logical unit name
The logical unit information for the queue manager, comprising the
logical unit name, TP name, and optional mode name. This can be
specified in one of 3 forms:
luname, for example IGY12355
luname/TPname, for example IGY12345/APING
luname/TPname/modename, for example IGY12345/APINGD/#INTER
82 MQSeries Intercommunication
Connection name (CONNAME)
For the first form, the TP name and mode name must be specified for
the TPNAME and MODENAME attributes; otherwise these attributes
must be blank.
For Digital OpenVMS, specify the Gateway Node name, the Access Name
to the channel program, and the TPNAME used to invoke the remote
program. For example: CONNAME('SNAGWY.VMSREQUESTER(HOSTVR)').
For Tandem NonStop Kernel, the value depends on whether SNAX or ICE
is used; see “Chapter 20. Setting up communication in Tandem NSK” on
page 289.
If the transmission protocol is NetBIOS
This is the NetBIOS name defined on the remote machine.
If the transmission protocol is SPX
This is an SPX-style address consisting of a 4-byte network address, a
6-byte node address and a 2-byte socket number. Enter these in
hexadecimal, with the network and node addresses separated by a fullstop
and the socket number in brackets. For example:
CONNAME('0a0b0c0d.804abcde23a1(5e86)')
If the socket number is omitted, the default MQSeries SPX socket number
is used. The default is X'5E86'.
The possible values are ‘yes’ and ‘no’. If you specify ‘yes’, the application data in
the message is converted before sending if you have specified one of the
appropriate built-in format names (see the MQSeries Application Programming
Guide). If you specify ‘no’, the application data in the message is not converted
before sending.
Use characters from the character set identified by the coded character set
identifier (CCSID) for the queue manager to ensure that the text is translated
correctly if it is sent to another queue manager.
The close-down exchange of control data between the two ends of the channel
includes an indication of the reason for closing. This ensures that the
corresponding end of the channel remains available to start up again.
On all platforms except OS/390 with CICS, you can specify any number of seconds
from zero through 999 999 where a value of zero means no disconnect; wait
indefinitely.
In OS/390 using CICS, you can specify any number of seconds from zero through
9999 where a value of zero means disconnect as soon as the transmission queue is
empty.
Note: Performance is affected by the value specified for the disconnect interval.
For more information, see “Stopping and quiescing channels (not MQSeries
for Windows)” on page 67.
84 MQSeries Intercommunication
Heartbeat interval (HBINT)
Heartbeat interval (HBINT)
| This attribute applies to V5.1 of MQSeries for AIX, AS/400, HP-UX, OS/2 Warp,
| Sun Solaris, and Windows NT and MQSeries for OS/390 without CICS. You can
| specify the approximate time between heartbeat flows that are to be passed from a
| sending MCA when there are no messages on the transmission queue. Heartbeat
| flows unblock the receiving MCA, which is waiting for messages to arrive or for
| the disconnect interval to expire. When the receiving MCA is unblocked it can
| disconnect the channel without waiting for the disconnect interval to expire.
| Heartbeat flows also free any storage buffers that have been allocated for large
| messages and close any queues that have been left open at the receiving end of the
| channel.
The value is in seconds and must be in the range 0 through 999 999. A value of
zero means that no heartbeat flows are to be sent. The default value is 300. To be
most useful, the value should be significantly less than the disconnect interval
value.
(Retry is not attempted if the cause of failure is such that a retry is not likely to be
successful.)
If the channel initiator or queue manager stops while the channel is retrying, the
short retry count and long retry count are reset when the channel initiator or queue
manager is restarted.
The long retry count attribute is valid only for channel types of sender,
cluster-sender, server, and cluster-receiver. It is also valid for requester channels on
OS/390 if you are using CICS. It may be set from zero through 999 999 999. On
OS/390 using CICS, it may be set from zero through 999, and the long and short
retries have the same count.
Note: For OS/2, OS/400, UNIX systems, and Windows NT, in order for retry to be
attempted a channel initiator must be running. The channel initiator must be
monitoring the initiation queue specified in the transmission queue that the
channel is using.
The channel tries to connect long retry count number of times at this long
interval, after trying the short retry count number of times at the short retry
interval.
This is valid only for channel types of sender, cluster-sender, server, and
cluster-receiver. It is also valid for requester channels on OS/390 if you are using
CICS. It may be set from zero through 999 999. On OS/390 using CICS, it may be
set from zero through 999.
When using side information for SNA communications, the mode name is defined
in the CPI-C Communications Side Object or APPC side information and this
attribute should be left blank; otherwise, it should be set to the SNA mode name.
When using side information for SNA communications, the transaction program
name is defined in the CPI-C Communications Side Object or APPC side
information and this attribute should be left blank. Otherwise, this name is
required by sender channels and requester channels except on OS/390 using CICS
where it is required in the channel definition but is ignored unless the server is
initiating the conversation.
On platforms other then Tandem NSK, the name can be up to 64 characters long.
See “Chapter 20. Setting up communication in Tandem NSK” on page 289 for more
information about that platform.
If the remote system is MQSeries for OS/390 using CICS, the transaction is:
v CKRC when you are defining a sender channel, or a server channel that acts as
a sender
v CKSV when you are defining a requester channel of a requester-server pair
v CKRC when you are defining a requester channel of a requester-sender pair
On other platforms, this should be set to the SNA transaction program name,
unless the CONNAME contains a side-object name in which case it should be set
to blanks. The actual name is taken instead from the CPI-C Communications Side
Object, or the APPC side information data set.
This information is set in a different way on other platforms; see the section in this
book about setting up communication for your platform.
86 MQSeries Intercommunication
Maximum message length (MAXMSGL)
Maximum message length (MAXMSGL)
Specifies the maximum length of a message that can be transmitted on the channel.
| On AIX, HP-UX, OS/2 Warp, OS/400, Sun Solaris, Windows NT, and VSE/ESA,
| specify a value greater than or equal to zero, and less than or equal to the
| maximum message length for the queue manager. See the MAXMSGL parameter of
| the MQSeries Command Reference book for more information. On other platforms,
| specify a value greater than or equal to zero, and less than or equal to 4 194 304
| bytes.
Use this facility to ensure that system resources are not exceeded by your channels.
Set this value in conjunction with the maximum message size, remembering to
allow for message descriptors. An error situation may be created if the message
size is allowed to exceed the transmission size, and message splitting is not
supported.
Notes:
1. If channel startup negotiation results in a size less than the minimum required
for the local channel program, no messages can be transferred.
2. The IBM MQSeries products that this edition of the book applies to all support
message splitting. Other MQSeries products do not support message splitting.
| For channel types of sender, server, and requester, the default is ‘process’. For
| channel types of cluster-sender and cluster-receiver, the default is ‘thread’. These
| defaults can change during your installation.
This attribute is the user identifier (a string) to be used by the MCA for
authorization to access MQSeries resources, including (if PUT authority is DEF)
authorization to put the message to the destination queue for receiver or requester
channels.
If this attribute is blank, the MCA uses its default user identifier.
The format and maximum length of this attribute depend on the platform, as for
“Receive exit name (RCVEXIT)” on page 91.
88 MQSeries Intercommunication
Message exit name (MSGEXIT)
The message exit is not supported on client-connection or server-connection
channels.
| In V5.1 of MQSeries for AIX, AS/400, HP-UX, OS/2 Warp, Sun Solaris, and
| Windows NT, you can run a sequence of message exits. The limitations on the user
| data length and an example of how to specify MSGDATA for more than one exit
| are as shown for RCVDATA. See “Receive exit user data (RCVDATA)” on page 92.
The format and maximum length of the name depend on the platform, as for
“Receive exit name (RCVEXIT)” on page 91.
This parameter is only valid for receiver, cluster-receiver, and requester channels. It
is not supported on MQSeries for OS/390 or MQSeries for Windows.
This parameter is only valid for receiver, cluster-receiver, and requester channels. It
is not supported on MQSeries for OS/390 or MQSeries for Windows.
This attribute controls the action of the MCA only if the message-retry exit name is
blank. If the exit name is not blank, the value of MRRTY is passed to the exit for
the exit’s use, but the number of retries performed (if any) is controlled by the exit,
and not by this attribute.
The value must be in the range 0 to 999 999 999. A value of zero means that no
retries will be performed.
This parameter is only valid for receiver, cluster-receiver, and requester channels. It
is not supported on MQSeries for OS/390 or MQSeries for Windows.
This attribute controls the action of the MCA only if the message-retry exit name is
blank. If the exit name is not blank, the value of MRTMR is passed to the exit for
the exit’s use, but the retry interval is controlled by the exit, and not by this
attribute.
This parameter is only valid for receiver, cluster-receiver, and requester channels. It
is not supported on MQSeries for OS/390 or MQSeries for Windows.
| This parameter is valid only on AIX, HP-UX, OS/2 Warp, OS/390 without CICS,
| OS/400, Sun Solaris, and Windows NT.
Password (PASSWORD)
You can specify a password of maximum length 12 characters, although only the
first 10 characters are used.
The password may be used by the MCA when attempting to initiate a secure LU
6.2 session with a remote MCA. It is valid for channel types of sender, server,
requester, or client-connection.
This does not apply to MQSeries for OS/390 except for client-connection channels,
and does not apply to MQSeries for Windows.
90 MQSeries Intercommunication
PUT authority (PUTAUT)
On OS/390, this might involve using both the user ID received from the
network and that derived from MCAUSER.
| On other platforms, with Process security, you choose to have the queue
| security based on the user ID that the process is running under. If
| MCAUSER is not blank, the user ID has the value of MCAUSER;
| otherwise, the user ID is that of the process, or user, running the MCA at
| the receiving end of the message channel.
The queues are opened with this user ID, and the open option
MQOO_SET_ALL_CONTEXT.
Context security (CTX)
Alternate user ID is used from the context information associated with a
message.
On OS/390, this may involve also using either the user ID received from
the network, or the user ID derived from MCAUSER, or both.
The UserIdentifier in the message descriptor is moved into the
AlternateUserId field in the object descriptor. The queue is opened with
the open options MQOO_SET_ALL_CONTEXT and
MQOO_ALTERNATE_USER_AUTHORITY.
Only Message Channel Agent security (ONLYMCA)
This is supported on OS/390 only and is the same as process security but
any user ID received from the network is not used.
Alternate Message Channel Agent security (ALTMCA)
This is supported on OS/390 only and is the same as context security but
any user ID received from the network is not used.
| Further details about context fields and open options can be found in the MQSeries
| Application Programming Guide. Further details about security can be found in the
| MQSeries System Administration book for V5.1 of MQSeries for AIX, HP-UX, OS/2
| Warp, Sun Solaris, and Windows NT, the MQSeries for AS/400 V5.1 System
| Administration book for MQSeries for AS/400, the MQSeries for Windows User’s
| Guide, or in the MQSeries System Management Guide or MQSeries Administration
| Guide for your platform.
The format and maximum length of this attribute depend on the platform:
v On OS/390 it is a load module name, maximum length 8 characters, except for
client-connection channels where the maximum length is 128 characters.
v On OS/400 it is of the form:
where progname occupies the first 10 characters, and libname the second 10
characters (both blank-padded to the right if necessary). The maximum length of
the string is 20 characters.
v On OS/2 and Windows it is of the form:
dllname(functionname)
where dllname is specified without the suffix “.DLL”. The maximum length of
the string is 40 characters.
v On UNIX systems, Digital OpenVMS, and Tandem NSK it is of the form:
libraryname(functionname)
| In V5.1 of MQSeries for AIX, AS/400, HP-UX, OS/2 Warp, Sun Solaris, and
| Windows NT you can specify a list of receive, send, or message exit program
| names. The names should be separated by a comma, a space, or both. For example:
| RCVEXIT(exit1 exit2)
| MSGEXIT(exit1,exit2)
| SENDEXIT(exit1, exit2)
| In V5.1 of MQSeries for AIX, AS/400, HP-UX, OS/2 Warp, Sun Solaris, and
| Windows NT the total length of the string of exit names and strings of user data
| for a particular type of exit is limited to 500 characters. In MQSeries for AS/400
| you can list up to 10 exit names.
| In V5.1 of MQSeries for AIX, AS/400, HP-UX, OS/2 Warp, Sun Solaris, and
| Windows NT, you can run a sequence of receive exits. The string of user data for a
| series of exits should be separated by a comma, spaces, or both. For example:
| RCVDATA(exit1_data exit2_data)
| MSGDATA(exit1_data,exit2_data)
| SENDDATA(exit1_data, exit2_data)
| In V5.1 of MQSeries for AIX, AS/400, HP-UX, OS/2 Warp, Sun Solaris, and
| Windows NT the length of the string of exit names and strings of user data is
| limited to 500 characters. In MQSeries for AS/400 you can specify up to 10 exit
| names and the length of user data for each is limited to 32 characters.
92 MQSeries Intercommunication
Security exit name (SCYEXIT)
The format and maximum length of the name depend on the platform, as for
“Receive exit name (RCVEXIT)” on page 91.
The format and maximum length of this attribute depend on the platform, as for
“Receive exit name (RCVEXIT)” on page 91.
| In V5.1 of MQSeries for AIX, AS/400, HP-UX, OS/2 Warp, Sun Solaris, and
| Windows NT, you can run a sequence of send exits. The limitations on the user
| data length and an example of how to specify SENDDATA for more than one exit,
| are as shown for RCVDATA. See “Receive exit user data (RCVDATA)” on page 92.
The value of the number should be high enough to avoid a number being reissued
while it is still being used by an earlier message. The two ends of a channel must
have the same sequence number wrap value when a channel starts up; otherwise,
an error occurs.
The value may be set from 100 through 999 999 999 (1 through 9 999 999 for
OS/390 using CICS).
Sequential delivery
This applies only to OS/390 using CICS. Set this to ‘YES’ when using sequential
numbering of messages. If one side of the channel requests this facility, it must be
accepted by the other side.
There could be a performance penalty associated with the use of this option.
For other platforms, the MCA always uses message sequence numbering.
(Retry is not attempted if the cause of failure is such that a retry is not likely to be
successful.)
If the channel initiator or queue manager stops while the channel is retrying, the
short retry count and long retry count are reset when the channel initiator or queue
manager is restarted.
The short retry count attribute is valid only for channel types of sender,
cluster-sender, server, and cluster-receiver. It is also valid for requester channels on
OS/390 if you are using CICS. It may be set from zero through 999 999 999 (1
through 999 for OS/390 using CICS, and the long and short retries have the same
count).
Note: For MQSeries for OS/2 Warp, OS/400, UNIX systems, and Windows NT, in
order for retry to be attempted a channel initiator must be running. The
channel initiator must be monitoring the initiation queue specified in the
transmission queue that the channel in using.
The interval between retries may be extended if the channel has to wait to become
active.
This attribute is valid only for channel types of sender, cluster-sender, server, and
cluster-receiver. It is also valid for requester channels on OS/390 if you are using
CICS. It may be set from zero through 999 999. (0 through 999 for OS/390 using
CICS).
The default is blank, which means the CICS system where you are logged on. The
name may be one through four alphanumeric characters.
Transaction identifier
This only applies to OS/390 using CICS.
The name of the local CICS transaction that you want to start. If you do not
specify a value, the name of the supplied transaction for the channel type is used.
94 MQSeries Intercommunication
Transmission queue name (XMITQ)
Provide the name of the transmission queue to be associated with this sender or
server channel, that corresponds to the queue manager at the far side of the
channel. The transmission queue may be given the same name as the queue
manager at the remote end.
LU62 LU 6.2
TCP TCP/IP (1)
UDP UDP (2)
NETBIOS NetBIOS (3)
SPX SPX (3)
Notes:
1. MQSeries for Windows Version 2.1 supports TCP only.
2. UDP is supported on MQSeries for AIX and MQSeries for Windows Version 2.0 only.
3. For use on OS/2 and Windows NT. Can also be used on OS/390 for defining
client-connection channels for use on OS/2 and Windows NT.
User ID (USERID)
| On V5.1 of MQSeries for AIX, AS/400, HP-UX, OS/2 Warp, Sun Solaris, and
| Windows NT, you can specify a task user identifier of 20 characters. On other
| platforms, you can specify a task user identifier of maximum length 12 characters,
| although only the first 10 characters are used.
The user ID may be used by the MCA when attempting to initiate a secure SNA
session with a remote MCA. It is valid for channel types of sender, server,
requester, or client-connection.
This does not apply to MQSeries for OS/390 except for client-connection channels.
96 MQSeries Intercommunication
Chapter 7. Example configuration chapters in this book
Throughout the following parts of the book, there is a series of chapters containing
examples of how to configure the various platforms to communicate with each
other. These chapters describe tasks performed to establish a working MQSeries
network. The tasks were to establish MQSeries sender and receiver channels to
enable bi-directional message flow between the platforms over all supported
protocols.
MQPUT MQGET
Ap pl1 Appl2
Sender
ch anne l
Remote
queue
Transmission L oc a l
queue queue
Figure 32. MQSeries channel to be set up in the example configuration chapters in this book
This is a simple example, intended to introduce only the basic elements of the
MQSeries network. It does not demonstrate the use of triggering which is
described in “Triggering channels” on page 20.
Appl1 and Appl2 are both application programs; Appl1 is putting messages and
Appl2 is receiving them.
Appl1 puts messages to a remote queue. The definition for this remote queue
specifies the name of a target queue manager, a local queue on that queue
manager, and a transmission queue on this the local queue manager.
When the queue manager receives the request from Appl1 to put a message to the
remote queue, it looks at the queue definition and sees that the destination is
remote. It therefore puts the message straight onto the transmission queue
A sender channel has in its definition a reference to one, and one only,
transmission queue. When a channel is started, and at other times during its
normal operation, it will look at this transmission queue and send any messages
on it to the target system. The message has in its transmission header details of the
destination queue and queue manager.
On the target queue manager, definitions are required for the local queue and the
receiver side of the channel. These objects operate independently of each other and
so can be created in any sequence.
On the local queue manager, definitions are required for the remote queue, the
transmission queue, and the sender side of the channel. Since both the remote
queue definition and the channel definition refer to the transmission queue name,
it is advisable to create the transmission queue first.
Network infrastructure
The configuration examples assume that all the systems are connected to a Token
Ring network with the exception of OS/390 and VSE/ESA, which communicate
via a 3745 (or equivalent) that is attached to the Token Ring, and Sun Solaris,
which is on an adjacent local area network (LAN) also attached to the 3745.
It is also assumed that, for SNA, all the required definitions in VTAM® and
network control program (NCP) are in place and activated for the LAN-attached
platforms to communicate over the wide area network (WAN).
Similarly, for TCP, it is assumed that nameserver function is available, either via a
domain nameserver or via locally held tables (for example a host file).
Communications software
Working configurations are given in the following chapters for the following
network software products:
v SNA
– Communications Manager/2 Version 1.11
– Communications Server for Windows NT, Version 5.0
– AIX Communications Server, V5.0
– Hewlett-Packard SNAplus2
– AT&T GIS SNA Services Version 2.06 or later
| – OS/400 Version 4 Release 4
– SunLink Peer-to-Peer Version 9.1
– OS/390 Version 2 Release 4
– CICS/VSE® Version 2 Release 1
98 MQSeries Intercommunication
Communications software
v TCP
– TCP for OS/2 Version 2
– Microsoft Windows NT Version 4 or later
– AIX Version 4 Release 1.4
– HP-UX Version 10.2 or later
– AT&T GIS UNIX Release 2.03.01
– Sun Solaris Release 2.4
| – OS/400 Version 4 Release 4
– TCP for OS/390
| – Digital UNIX Version 4.0 or later
v NetBIOS
v SPX
v UDP
The examples only cover how to set up communications where clustering is not
being used. For information about setting up communications while using
clustering, see the MQSeries Queue Manager Clusters book. The communications’
configuration values given here still apply.
Each chapter contains a worksheet in which you can find the parameters used in
the example configurations. There is a short description of each parameter and
some guidance on where to find the equivalent values in your system. When you
have a set of values of your own, record these in the spaces on the worksheet. As
you proceed through the chapter, you will find cross-references to these values as
you need them.
IT responsibilities
Because the IT infrastructure can vary greatly between organizations, it is difficult
to indicate who, within an organization, controls and maintains the information
required to complete each parameter value. To understand the terminology used in
the following chapters, consider the following guidelines as a starting point.
v System administrator is used to describe the person (or group of people) who
installs and configures the software for a specific platform.
v Network administrator is used to describe the person who controls LAN
connectivity, LAN address assignments, network naming conventions, and so on.
This person may be in a separate group or may be part of the system
administration group.
In most OS/390 installations, there is a group responsible for updating the
ACF/VTAM®, ACF/NCP, and TCP/IP software to support the network
configuration. The people in this group should be the main source of
information needed when connecting any MQSeries platform to MQSeries for
OS/390. They may also influence or mandate network naming conventions on
LANs and you should verify their span of control before creating your
definitions.
v A specific type of administrator, for example CICS administrator is indicated in
cases where we can more clearly describe the responsibilities of the person.
Part 3. DQM in MQSeries for OS/2 Warp, Windows NT, Digital OpenVMS, Tandem NSK, and UNIX systems 103
DQM in distributed platforms
Chapter 19. Setting up communication in Digital SNA channels . . . . . . . . . . . . . 289
OpenVMS systems . . . . . . . . . . . 277 LU 6.2 responder processes. . . . . . . . 291
Deciding on a connection . . . . . . . . . 277 TCP channels . . . . . . . . . . . . . 291
Defining a TCP connection . . . . . . . . . 278 Communications examples . . . . . . . . . 292
Sending end . . . . . . . . . . . . . 278 SNAX communications example . . . . . . 292
Receiving channels using Compaq (DIGITAL) SCF SNA line configuration file . . . . . 292
TCP/IP services (UCX) for OpenVMS . . . . 278 SYSGEN parameters . . . . . . . . . 294
Using the TCP/IP SO_KEEPALIVE option 279 SNAX/APC process configuration . . . . 295
Receiving channels using Cisco MultiNet for Channel definitions . . . . . . . . . 299
OpenVMS . . . . . . . . . . . . . 279 ICE communications example . . . . . . . 299
Receiving channels using Attachmate PathWay Configuring the ICE process . . . . . . 299
for OpenVMS . . . . . . . . . . . . 280 Defining the line and APC information . . . 300
Receiving channels using Process Software Channel definitions for ICE. . . . . . . 303
Corporation TCPware . . . . . . . . . 280 TCP/IP communications example . . . . . 303
Defining an LU 6.2 connection . . . . . . . 281 TCPConfig stanza in QMINI . . . . . . 303
SNA configuration. . . . . . . . . . . 281 Defining a TCP sender channel . . . . . 303
Defining access names . . . . . . . . 282 Defining a TCP receiver channel . . . . . 304
Specifying SNA configuration parameters to Defining a TCP/IP sender channel on the
MQSeries. . . . . . . . . . . . . . 283 remote system . . . . . . . . . . . 304
Passing parameters to sender and requester
channel pairs . . . . . . . . . . . 283 Chapter 21. Message channel planning example
Running senders and requesters . . . . . 283 for distributed platforms . . . . . . . . . 305
Passing parameters to servers and receivers 283 What the example shows . . . . . . . . . 305
Running servers and receivers . . . . . . 284 Queue manager QM1 example . . . . . . 307
Ending the SNA Listener process . . . . . 284 Queue manager QM2 example . . . . . . 308
Sample MQSeries configuration . . . . . . 284 Running the example. . . . . . . . . . . 309
Problem solving . . . . . . . . . . . 285 Expanding this example . . . . . . . . . 309
Defining a DECnet Phase IV connection . . . . 285
Sending end . . . . . . . . . . . . . 286 Chapter 22. Example SINIX and DC/OSx
Receiving on DECnet Phase IV . . . . . . 286 configuration files . . . . . . . . . . . 311
Defining a DECnet Phase V connection. . . . . 286 Configuration file on bight . . . . . . . . . 312
Configuration file on forties . . . . . . . . 313
Chapter 20. Setting up communication in Working configuration files for Pyramid DC/OSx 313
Tandem NSK . . . . . . . . . . . . . 289 Output of dbd command . . . . . . . . 314
Deciding on a connection . . . . . . . . . 289
| This part of the book describes the MQSeries distributed queue management
| function for MQSeries for OS/2 Warp, Windows NT, Digital OpenVMS, Tandem
| NSK, and UNIX systems. The information given may not all apply to MQSeries for
| Windows. You should refer to theMQSeries for Windows User’s Guidefor information
| about that product. For information about the MQSeries distributed queue
| management function for MQSeries for OS/390, see“Part 4. DQM in MQSeries for
| OS/390” on page 319. For information about the MQSeries distributed queue
| management function for MQSeries for AS/400, see“Part 5. DQM in MQSeries for
| AS/400” on page 421.
For a list of the functions available to you when setting up and controlling
message channels, using the two types of commands, see Table 7 on page 106.
It consists of commands, programs, a file for the channel definitions, and a storage
area for synchronization information. The following is a brief description of the
components.
v The channel commands are a subset of the MQSeries Commands (MQSC).
v You use MQSC and the control commands to:
– Create, copy, display, change, and delete channel definitions
Functions available
Table 7 shows the full list of MQSeries functions that you may need when setting
up and controlling channels. The channel functions are explained in this chapter.
| For more details of the control commands that you issue at the command line, see
| the MQSeries System Administration book for V5.1 of MQSeries for AIX, HP-UX,
| OS/2 Warp, Sun Solaris, and Windows NT, or the MQSeries System Management
| Guide for your platform.
The MQSC commands are fully described in the MQSeries Command Reference book.
Table 7. Functions available in OS/2, Windows NT, Digital OpenVMS, Tandem NSK, and UNIX systems
Function Control MQSC MQSeries MQSeries Service
commands Explorer snap-in
equivalent? equivalent?
Queue manager functions
Change queue manager ALTER QMGR Yes No
Create queue manager crtmqm Yes Yes
Delete queue manager dltmqm Yes Yes
Display queue manager DISPLAY QMGR Yes No
End queue manager endmqm Yes Yes
Ping queue manager PING QMGR No No
Start queue manager strmqm Yes Yes
Add a queue manager to Windows No Yes
NT Service Control Manager
Command server functions
Display command server dspmqcsv No Yes
End command server endmqcsv No Yes
Start command server strmqcsv No Yes
Queue functions
Change queue ALTER QALIAS Yes No
ALTER QLOCAL
ALTER QMODEL
ALTER
QREMOTE
Clear queue CLEAR QLOCAL Yes No
CLEAR QUEUE
Channels must be completely defined, and their associated objects must exist and
be available for use, before a channel can be started. This chapter shows you how
to do this.
In addition, the particular communication link for each channel must be defined
and available before a channel can be run. For a description of how LU 6.2,
TCP/IP, NetBIOS, SPX, and DECnet links are defined, see the particular
communication guide for your installation. See also the example configuration
chapters in this book.
Creating objects
Use MQSC to create the queue and alias objects: transmission queues, remote
queue definitions, queue manager alias definitions, reply-to queue alias definitions,
and reply-to local queues.
Also create the definitions of processes for triggering (MCAs) in a similar way.
For an example showing how to create all the required objects see “Chapter 21.
Message channel planning example for distributed platforms” on page 305.
When the program has finished running, you can use the STRMQM command to
start the queue manager.
| See the MQSeries System Administration book for information about the CRTMQM
| and STRMQM commands and a list of default objects.
If you wish to make any changes to the default objects, you can create your own
version of the old amqscoma.tst file and edit it.
Creating a channel
To create a new channel you have to create two channel definitions, one at each
end of the connection. You create the first channel definition at the first queue
manager. Then you create the second channel definition at the second queue
manager, on the other end of the link.
Both ends must be defined using the same channel name. The two ends must have
compatible channel types, for example: Sender and Receiver.
To create a channel definition for one end of the link use the MQSC command
DEFINE CHANNEL. Include the name of the channel, the channel type for this
end of the connection, a connection name, a description (if required), the name of
the transmission queue (if required), and the transmission protocol. Also include
any other attributes that you want to be different from the system default values
for the required channel type, using the information you have gathered previously.
You are provided with help in deciding on the values of the channel attributes in
“Chapter 6. Channel attributes” on page 77.
Note: You are very strongly recommended to name all the channels in your
network uniquely. Including the source and target queue manager names in
the channel name is a good way to do this.
For portability, you should restrict the line length of your commands to 72
characters. Use a concatenation character as shown to continue over more than one
line. On Tandem NSK use Ctrl-y to end the input at the command line, or enter
exit or quit. On OS/2, Windows NT, or Digital OpenVMS use Ctrl-z. On UNIX
systems, use Ctrl-d. Alternatively, on V5.1 of MQSeries for AIX, HP-UX, OS/2
Warp, Sun Solaris, and Windows NT, use the end command.
Displaying a channel
Use the MQSC command DISPLAY CHANNEL, specifying the channel name, the
channel type (optional), and the attributes you want to see, or specifying that all
attributes are to be displayed. In V5.1 of MQSeries for AIX, HP-UX, OS/2 Warp,
Sun Solaris, and Windows NT the ALL parameter of the DISPLAY CHANNEL
command is assumed by default if no specific attributes are requested and the
channel name specified is not generic.
Note that the saved status does not apply until at least one batch of messages has
been transmitted on the channel. In V5.1 of MQSeries for AIX, HP-UX, OS/2 Warp,
Sun Solaris, and Windows NT status is also saved when a channel is stopped
(using the STOP CHL command) and when the queue manager is ended.
Starting a channel
For applications to be able to exchange messages you must start a listener program
for inbound connections (or, in the case of UNIX systems, create a listener
attachment). In OS/2, Windows NT, and Tandem NSK, use the runmqlsr command
to start the MQSeries listener process. Any inbound requests for channel
For outbound connections you must start the channel in one of the following three
ways:
1. Use the MQSC command START CHANNEL, specifying the channel name, to
start the channel as a process or a thread, depending on the MCATYPE
parameter. (If channels are started as threads, they are threads of a channel
initiator, which must have been started previously using the runmqchi
command.)
START CHANNEL(QM1.TO.QM2)
2. Use the control command runmqchl to start the channel as a process.
runmqchl -c QM1.TO.QM2 -m QM1
3. Use the channel initiator to trigger the channel.
Renaming a channel
To rename a message channel, use MQSC to carry out the following steps:
1. Use STOP CHANNEL to stop the channel.
2. Use DEFINE CHANNEL to create a duplicate channel definition with the new
name.
3. Use DISPLAY CHANNEL to check that it has been created correctly.
4. Use DELETE CHANNEL to delete the original channel definition.
If you decide to rename a message channel, remember that a channel has two
channel definitions, one at each end. Make sure you rename the channel at both
ends at the same time.
Channel functions
The channel functions available are shown in Table 7 on page 106. Here some more
detail is given about the channel functions.
The channel name must be the same at both ends of the channel, and unique
within the network. However, you should restrict the characters used to those that
are valid for MQSeries object names.
Change
Use the MQSC command ALTER CHANNEL to change an existing channel
definition, except for the channel name, or channel type.
Delete
Use the MQSC command DELETE CHANNEL to delete a named channel.
Display
Use the MQSC command DISPLAY CHANNEL to display the current definition
for the channel.
Display Status
The MQSC command DISPLAY CHSTATUS displays the status of a channel
whether the channel is active or inactive. It applies to all message channels. It does
not apply to MQI channels other than server-connection channels on V5.1 of
MQSeries for AIX, HP-UX, OS/2 Warp, Sun Solaris, and Windows NT. See
“Displaying channel status” on page 110.
Ping
Use the MQSC command PING CHANNEL to exchange a fixed data message with
the remote end. This gives some confidence to the system supervisor that the link
is available and functioning.
Ping does not involve the use of transmission queues and target queues. It uses
channel definitions, the related communication link, and the network setup. It can
only be used if the channel is not currently active.
It is available from sender and server channels only. The corresponding channel is
started at the far side of the link, and performs the startup parameter negotiation.
Errors are notified normally.
Start
Use the MQSC command START CHANNEL for sender, server, and requester
channels. It should not be necessary where a channel has been set up with queue
manager triggering.
Also use the START CHANNEL command for receiver channels that have a
disabled status, and on V5.1 of MQSeries for AIX, HP-UX, OS/2 Warp, Sun Solaris,
and Windows NT, for server-connection channels that have a disabled status.
Starting a receiver or server-connection channel that is in disabled status resets the
channel and allows it to be started from the remote channel.
When started, the sending MCA reads the channel definition file and opens the
transmission queue. A channel start-up sequence is executed, which remotely starts
the corresponding MCA of the receiver or server channel. When they have been
started, the sender and server processes await messages arriving on the
transmission queue and transmit them as they arrive.
When you use triggering or run channels as threads, you will need to start the
channel initiator to monitor the initiation queue. Use the runmqchi command for
this.
Use of the Start option always causes the channel to re-synchronize, where
necessary.
A message is returned to the screen confirming that the request to start a channel
has been accepted. For confirmation that the start command has succeeded, check
the error log, or use DISPLAY CHSTATUS. The error logs are:
OS/2 and Windows NT
\mqm\qmgrs\qmname\errors\AMQERR01.LOG (for each queue manager called
qmname)
\mqm\qmgrs\@SYSTEM\errors\AMQERR01.LOG (for general errors)
Note: On Windows NT, you still also get a message in the Windows NT
application event log.
Digital OpenVMS
MQS_ROOT:[MQM.QMGRS.QMNAME.ERRORS]AMQERR01.LOG (for each queue
manager called qmname)
MQS_ROOT:[MQM.QMGRS.$SYSTEM.ERRORS]AMQERR01.LOG (for general errors)
Tandem NSK
The location of the error logs depends on whether the queue manager
name is known and whether the error is associated with a client.
v If the queue manager name is known and the queue manager is
available:
<QMVOL>.<SUBVOL>L.MQERRLG1
v If the queue manager is not available:
<MQSVOL>.ZMQSSYS.MQERRLG1
UNIX systems
/var/mqm/qmgrs/qmname/errors/AMQERR01.LOG (for each queue manager
called qmname)
/var/mqm/qmgrs/@SYSTEM/errors/AMQERR01.LOG (for general errors)
Stop
Use the MQSC command STOP CHANNEL to request the channel to stop activity.
Any channel type is disabled by this command. The channel will not start a new
batch of messages until the operator starts the channel again. (For information
about restarting stopped channels, see “Restarting stopped channels” on page 69.)
This command requests the channel to close down in an orderly way. The current
batch of messages is completed and the syncpoint procedure is carried out with
the other end of the channel.
Note: If the channel is idle this command will not terminate a receiving channel.
Reset
Use the MQSC command RESET CHANNEL to change the message sequence
number. This command is available for any message channel, but not for MQI
channels (client-connection or server-connection). The first message starts the new
sequence the next time the channel is started.
If the command is issued on a sender or server channel, it informs the other side
of the change when the channel is restarted.
Resolve
Use the MQSC command RESOLVE CHANNEL when messages are held in-doubt
by a sender or server, for example because one end of the link has terminated, and
there is no prospect of it recovering. The RESOLVE CHANNEL command accepts
one of two parameters: BACKOUT or COMMIT. Backout restores messages to the
transmission queue, while Commit discards them.
The channel program does not try to establish a session with a partner. Instead, it
determines the logical unit of work identifier (LUWID) which represents the
in-doubt messages. It then issues, as requested, either:
v BACKOUT to restore the messages to the transmission queue; or
v COMMIT to delete the messages from the transmission queue.
In addition, where needed, the triggering arrangement must be prepared with the
definition of the necessary processes and queues.
The recommended name for the transmission queue is the queue manager name
on the remote system, as shown in the examples above.
Triggering channels
An overview of triggering is given in “Triggering channels” on page 20, while it is
described in depth in the MQSeries Application Programming Guide. This description
provides you with information specific to MQSeries for OS/2 Warp, Windows NT,
Digital OpenVMS, Tandem NSK, and UNIX systems.
| Alternatively, for V5.1 of MQSeries for AIX, HP-UX, OS/2 Warp, Sun Solaris, and
| Windows NT, you can eliminate the need for a process definition by specifying the
| channel name in the TRIGGERDATA attribute of the transmission queue.
If you do not specify a channel name, the channel initiator searches the channel
definition files until it finds a channel that is associated with the named
transmission queue.
Examples for V5.1 of MQSeries for AIX, HP-UX, OS/2 Warp, Sun
Solaris, and Windows NT
Define the local queue (Q3), specifying that trigger messages are to be written to
the initiation queue (IQ) to trigger the application that starts channel
(QM3.TO.QM4):
DEFINE QLOCAL(QM4) TRIGGER INITQ(SYSTEM.CHANNEL.INITQ) USAGE (XMITQ)
| Whichever command you use, specify the name of the initiation queue on the
| command, unless you are using the default initiation queue. For example, to use
| the runmqchi command to start queue IQ for the default queue manager, enter:
| runmqchi -q IQ
| Note: Tandem NSK also allows control of the channel initiator from the PATHWAY
| environment. This is the recommended method. For more information about
| this, see the MQSeries for Tandem NonStop Kernel System Management Guide.
| In V5.1 of MQSeries for AIX, HP-UX, OS/2 Warp, Sun Solaris, and Windows NT, a
| channel initiator is started automatically and the number of channel initiators that
| you can start is limited. The default limit is 3. You can change this using
| MAXINITIATORS in the qm.ini file for AIX, HP-UX, OS/2 Warp, and Sun Solaris,
| and in the registry for Windows NT.
| See the MQSeries System Administration book for V5.1 of MQSeries for AIX, HP-UX,
| OS/2 Warp, Sun Solaris, and Windows NT, or the MQSeries System Management
| Guide for your platform, for details of the run channel initiator command, and the
| other control commands.
| However, if you need to stop a channel initiator but not the queue manager, you
| should inhibit the queue that the initiator queue is reading from. To do this, you
| disable the GET attribute of the initiation queue. To restart the channel initiator,
| simply use the runmqchi command.
Table 10. Channel programs for UNIX systems, Digital OpenVMS, and Tandem NSK
Program name Direction of connection Communication
amqcrs6a (MQLU6RES on Inbound LU 6.2
Tandem NSK only)
amqcrsta (MQTCPRES (on Inbound TCP and DECnet for Digital
Tandem NSK only) OpenVMS
runmqchl Outbound TCP for UNIX systems
runmqlsr Inbound LU 6.2 for Digital OpenVMS
and Tandem NSK and TCP
for UNIX systems
runmqchi Outbound Any
Undelivered-message queue
| A DLQ handler is provided with MQSeries for OS/2 Warp and Windows NT, and
| with MQSeries on UNIX systems, Digital OpenVMS, and Tandem NSK. See the
Queues in use
MCAs for receiver channels may keep the destination queues open even when
messages are not being transmitted; this results in the queues appearing to be “in
use”.
You need to provide users with authority to make use of the MQSeries facilities,
and this is organized according to actions to be taken with respect to objects and
definitions. For example:
v Queue managers can be started and stopped by authorized users
v Applications need to connect to the queue manager, and have authority to make
use of queues
v Message channels need to be created and controlled by authorized users
v Objects are kept in libraries, and access to these libraries may be restricted
The message channel agent at a remote site needs to check that the message being
delivered originated from a user with authority to do so at this remote site. In
addition, as MCAs can be started remotely, it may be necessary to verify that the
remote processes trying to start your MCAs are authorized to do so. There are
three possible ways for you to deal with this:
1. Specify PUTAUT=CTX in the channel definition to indicate that messages must
contain acceptable context authority, otherwise they will be discarded.
2. Implement user exit security checking to ensure that the corresponding message
channel is authorized. The security of the installation hosting the corresponding
channel ensures that all users are properly authorized, so that you do not need
to check individual messages.
3. Implement user exit message processing to ensure that individual messages are
vetted for authorization.
User IDs on UNIX systems, Digital OpenVMS: In Digital OpenVMS, all user IDs
are displayed in uppercase. The queue manager converts all uppercase or mixed
case user identifiers into lowercase, before inserting them into the context part of a
message, or checking their authorization. All authorizations should therefore be
based only on lowercase identifiers.
Note that the automatic conversions are not carried out if you provide a message
exit on UNIX systems and Windows NT for any other reason.
In order to run, these user-exit programs must have predefined names and be
available on call to the channel programs. The names of the user-exit programs are
included in the message channel definitions.
There is a defined control block interface for handing over control to these
programs, and for handling the return of control from these programs.
The precise places where these programs are called, and details of control blocks
and names, are to be found in “Part 7. Further intercommunication considerations”
on page 503.
You can use MQIBindType in association with the environment variable to achieve
the desired affect as follows:
In summary, there are only two ways of actually making channels and listeners
run as trusted:
1. By specifying MQIBindType=FASTPATH in qm.ini or registry and not
specifying the environment variable.
2. By specifying MQIBindType=FASTPATH in qm.ini or registry and setting the
environment variable to FASTPATH.
You are recommended to run channels and listeners as trusted only in a stable
environment in which you are not, for example, testing applications or user exits
that may abend or need to be cancelled. An errant application could compromise
the integrity of your queue manager. However, if your environment is stable and if
performance is an important issue, you may choose to run channels and listeners
as trusted.
Note: If you are using MQSeries for Compaq (DIGITAL) OpenVMS the option on
the MQ_CONNECT_TYPE is FAST, not FASTPATH.
What next?
When you have made the preparations described in this chapter you are ready to
set up communications. Proceed to one of the following chapters, depending on
what platform you are using:
v “Chapter 10. Setting up communication for OS/2 and Windows NT” on
page 123
v “Chapter 13. Setting up communication in UNIX systems” on page 191
v “Chapter 19. Setting up communication in Digital OpenVMS systems” on
page 277
v “Chapter 20. Setting up communication in Tandem NSK” on page 289
For UNIX systems see “Chapter 13. Setting up communication in UNIX systems”
on page 191. For Digital OpenVMS, see “Chapter 19. Setting up communication in
Digital OpenVMS systems” on page 277.
Deciding on a connection
There are four forms of communication for MQSeries for OS/2 Warp and
Windows NT:
v TCP
v LU 6.2
v NetBIOS
v SPX
Each channel definition must specify only one protocol as the Transmission
protocol (Transport Type) attribute. One or more protocols may be used by a queue
manager.
For MQSeries clients, it may be useful to have alternative channels using different
transmission protocols. See the MQSeries Clients book.
Sending end
Specify the host name, or the TCP address of the target machine, in the Connection
name field of the channel definition. The port to connect to will default to 1414.
Port number 1414 is assigned by the Internet Assigned Numbers Authority to
MQSeries.
To use a port number other than the default, change the connection name field
thus:
Connection Name OS2ROG3(1822)
where 1822 is the port required. (This must be the port that the listener at the
receiving end is listening on.)
You can change the default port number by specifying it in the queue manager
configuration file (qm.ini) for MQSeries for OS/2 Warp and the registry for
MQSeries for Windows NT:
TCP:
Port=1822
For more information about the values you set using qm.ini, see “Appendix D.
Configuration file stanzas for distributed queuing” on page 637.
Receiving on TCP
Receiving channel programs are started in response to a startup request from the
sending channel. To do this, a listener program has to be started to detect incoming
network requests and start the associated channel.
You should use either the TCP/IP listener (INETD) (not for Windows NT) or the
MQSeries listener.
where 1414 is the port number required for MQSeries. You can change this but
it must match the port number specified at the sending end.
2. Add a line to the TCPIP\ETC\INETD.LST file:
MQSeries tcp C:\MQM\BIN\AMQCRSTA [-m QMName]
The last part in square brackets is optional and is not required for the default
queue manager. If your MQSeries for OS/2 Warp is installed on a different
drive, replace the C: above with the correct drive letter.
It is possible to have more than one queue manager on the machine. You must add
a line to each of the two files, as above, for each of the queue managers. For
example:
MQSeries2 1822/tcp
If the backlog reaches the values shown in Table 11, the TCP/IP connection is
rejected and the channel will not be able to start.
For MCA channels, this results in the channel going into a RETRY state and
retrying the connection at a later time.
However, to avoid this error, you can add an entry in the qm.ini file or in the
registry for Windows NT:
TCP:
ListenerBacklog = n
This overrides the default maximum number of outstanding requests (see Table 11)
for the TCP/IP listener.
Note: Some operating systems support a larger value than the default. If necessary,
this can be used to avoid reaching the connection limit.
To run the listener with the backlog option switched on, use the RUNMQLSR -B
command. For information about the RUNMQLSR command, see the MQSeries System
Administration book.
The square brackets indicate optional parameters; QMNAME is not required for the
default queue manager, and the port number is not required if you are using the
default (1414).
For the best performance, run the MQSeries listener as a trusted application as
described in “Running channels and listeners as trusted applications” on page 121.
See the MQSeries Application Programming Guide for information about trusted
applications.
You can stop all MQSeries listeners running on a queue manager that is inactive,
using the command:
If you do not specify a queue manager name, the default queue manager is
assumed.
If you are using OS/2, you must then issue the following command:
inetcfg keepalive=value
On Windows NT, the TCP configuration registry value for KeepAliveTime controls
the interval that elapses before the connection will be checked. The default is two
hours. For information about changing this value, see the Microsoft article TCP/IP
and NBT Configuration Parameters for Windows NT 3.5 (PSS ID number Q120642).
See the Multiplatform APPC Configuration Guide for OS/2 examples, and the
following table for information.
Table 12. Settings on the local OS/2 or Windows NT system for a remote queue manager
platform
Remote platform TPNAME TPPATH
OS/390 or The same as in the corresponding -
MVS/ESA side information on the remote
without CICS queue manager.
OS/390 or CKRC (sender) CKSV (requester) -
MVS/ESA using CKRC (server)
CICS
OS/400 The same as the compare value in -
the routing entry on the OS/400
system.
OS/2 As specified in the OS/2 Run <drive>:\mqm\bin\amqcrs6a
Listener command, or defaulted
from the OS/2 queue manager
configuration file.
UNIX systems The same as in the corresponding mqmtop/bin/amqcrs6a
side information on the remote
queue manager.
Windows NT As specified in the Windows NT <drive>:\mqm\bin\amqcrs6a
Run Listener command, or the
invokable Transaction Program
that was defined using TpSetup on
Windows NT.
For more information about the values you set using qm.ini, see “Appendix D.
Configuration file stanzas for distributed queuing” on page 637.
2. Specify the environment variable:
APPNLLU = Your_LU_Name
3. If this has not been specified, your default LU will be used.
When you define an MQSeries channel that will use the LU 6.2 connection, the
Connection name (CONNAME) channel attribute specifies the fully-qualified name
of the partner LU. as defined in the local Communications Manager/2 profile.
In the CPI-C side object enter the partner LU Name at the receiving machine, the
TP Name and the Mode Name. For example:
Partner LU Name OS2ROG2
Partner TP Name recv
Mode Name #INTER
Receiving on LU 6.2
Receiving channel programs are started in response to a startup request from the
sending channel. To do this, a listener program has to be started to detect incoming
network requests and start the associated channel. You start this listener program
with the RUNMQLSR command, giving the TpName to listen on. Alternatively,
you can use Attach Manager in Communications Manager/2 for OS/2, or TpStart
under SNA Server for Windows NT.
where RECV is the TpName that is specified at the other (sending) end as the
“TpName to start on the remote side”. The last part in square brackets is optional
and is not required for the default queue manager.
It is possible to have more than one queue manager running on one machine. You
must assign a different TpName to each queue manager, and then start a listener
program for each one. For example:
For the best performance, run the MQSeries listener as a trusted application as
described in “Running channels and listeners as trusted applications” on page 121.
See the MQSeries Application Programming Guide for information about trusted
applications.
You can stop all MQSeries listeners running on a queue manager that is inactive,
using the command:
ENDMQLSR [-m QMNAME]
If you do not specify a queue manager name, the default queue manager is
assumed.
You can do this using the panel configuration in Communications Manager/2 or,
alternatively, you can edit your NDF file directly (see the heading “Define
Transaction Programs” in the Multiplatform APPC Configuration Guide).
Panel configuration: These are the entries required on the TP definition panel:
Transaction Program (TP) name : AMQCRS6A
OS/2 program path and file name: c:\mqm\bin\amqcrs6a.exe
Program parameter string : -n AMQCRS6A
NDF file configuration: Your node definitions file (.ndf) must contain a define_tp
command. The following example shows what must be included:
define_tp
tp_name(AMQCRS6A)
filespec(c:\mqm\bin\amqcrs6a.exe)
parm_string(-n AMQCRS6A -m QM1)
where QM is the Queue Manager name and TpName is the TP Name. See the
Microsoft SNA Server APPC Programmers Guide or the Microsoft SNA Server CPI-C
Programmers Guide for more information.
Each running channel, regardless of type, uses one NetBIOS session and one
NetBIOS command. The IBM NetBIOS implementation allows multiple processes
to use the same local NetBIOS name. Therefore, only one NetBIOS name needs to
be available for use by MQSeries. Other vendors’ implementations, for example
In all cases, ensure that sufficient resources of each type are already available, or
increase the maximums specified in the configuration. Any changes to the values
will require a system restart.
During system startup, the NetBIOS device driver displays the number of sessions,
commands, and names available for use by applications. These resources are
available to any NetBIOS-based application that is running on the same system.
Therefore, it is possible for other applications to consume these resources before
MQSeries needs to acquire them. Your LAN network administrator should be able
to clarify this for you.
You can set the MQNAME value for each process. Alternatively, you may set it
at a system level — in the CONFIG.SYS file on OS/2 or in the Windows NT
registry.
If you are using a NetBIOS implementation that requires unique names, you
must issue a SET MQNAME command in each window in which an MQSeries
process is started. The MQNAME value is arbitrary but it must be unique for
each process.
3. The NETBIOS stanza in the queue manager configuration file qm.ini or in the
Windows NT registry. For example:
NETBIOS:
LocalName=my_station
Notes:
1. Due to the variations in implementation of the NetBIOS products supported,
you are advised to make each NetBIOS name unique in the network. If you do
not, unpredictable results may occur. If you have problems establishing a
NetBIOS channel and there are error messages in the queue-manager error log
showing a NetBIOS return code of X'15', review your use of NetBIOS names.
2. On Windows NT you cannot use your machine name as the NetBIOS name
because Windows NT already uses it.
3. Sender channel initiation requires that a NetBIOS name be specified either via
the MQNAME environment variable or the LocalName in the qm.ini file or in
the Windows NT registry.
If the -m operand is not specified in the command, the values will apply only
to the default queue manager.
2. The NETBIOS stanza in the queue manager configuration file qm.ini or in the
Windows NT registry. For example:
NETBIOS:
NumSess=Qmgr_max_sess
NumCmds=Qmgr_max_cmds
NumNames=Qmgr_max_names
The default LAN adapter number used by MQSeries for NetBIOS connections is 0.
Verify the adapter number being used on your system as follows:
On OS/2 the adapter number used by NetBIOS on your system can be viewed in
the PROTOCOL.INI file or the LANTRAN.LOG file found in the \IBMCOM
directory.
Specify the correct value in the NETBIOS stanza of the queue manager
configuration file, qm.ini, or the Windows NT registry:
NETBIOS:
AdapterNum=n
Target listener
At the receiving end, follow these steps:
1. Define the NetBIOS station name using the MQNAME or LocalName value as
described above.
2. Verify the LAN adapter number being used on your system and specify the
correct file using the AdapterNum as described above.
3. Define the receiver channel:
DEFINE CHANNEL (chname) CHLTYPE(RCVR) +
TRPTYPE(NETBIOS) +
REPLACE
4. Start the MQSeries listener program to establish the station and make it
possible to contact it. For example:
RUNMQLSR -t NETBIOS -l your_station [-m qmgr]
For the best performance, run the MQSeries listener as a trusted application as
described in “Running channels and listeners as trusted applications” on page 121.
See the MQSeries Application Programming Guide for information about trusted
applications.
You can stop all MQSeries listeners running on a queue manager that is inactive,
using the command:
ENDMQLSR [-m QMNAME]
If you do not specify a queue manager name, the default queue manager is
assumed.
Sending end
If the target machine is remote, specify the SPX address of the target machine in
the Connection name field of the channel definition.
If the local and remote machines are on the same network then the network
address need not be specified. If the remote end is listening on the default socket
(5E86) then the socket need not be specified.
In the default case, where the machines are both on the same network, this
becomes:
CONNAME(08005A7161E5)
The default socket number may be changed by specifying it in the queue manager
configuration file (qm.ini) or the Windows NT registry:
SPX:
Socket=5E87
For more information about the values you set using qm.ini or the Windows NT
registry, see “Appendix D. Configuration file stanzas for distributed queuing” on
page 637.
You can use the timeouts described in “IPX/SPX parameters” on page 133 to adjust
the behavior of KEEPALIVE.
Receiving on SPX
Receiving channel programs are started in response to a startup request from the
sending channel. To do this, a listener program has to be started to detect incoming
network requests and start the associated channel.
If the backlog reaches the values in Table 13 on page 132, the reason code,
MQRC_Q_MGR_NOT_AVAILABLE is received when trying to connect to the
queue manager using MQCONN or MQCONNX. If this happens, it is possible to
try to connect again.
However, to avoid this error, you can add an entry in the qm.ini file or in the
registry for Windows NT:
TCP:
ListenerBacklog = n
This overrides the default maximum number of outstanding requests (see Table 13
on page 132) for the TCP/IP listener.
Note: Some operating systems support a larger value than the default. If necessary,
this can be used to avoid reaching the connection limit.
To run the listener with the backlog option switched on, use the RUNMQLSR -B
command. For information about the RUNMQLSR command, see the MQSeries System
Administration book.
The square brackets indicate optional parameters; QMNAME is not required for the
default queue manager, and the socket number is not required if you are using the
default (5E86).
For the best performance, run the MQSeries listener as a trusted application as
described in “Running channels and listeners as trusted applications” on page 121.
See the MQSeries Application Programming Guide for information about trusted
applications.
You can stop all MQSeries listeners running on a queue manager that is inactive,
using the command:
ENDMQLSR [-m QMNAME]
If you do not specify a queue manager name, the default queue manager is
assumed.
IPX/SPX parameters
In most cases the default settings for the IPX/SPX parameters will suit your needs.
However, you may need to modify some of them in your environment to tune its
use for MQSeries. The actual parameters and the method of changing them varies
according to the platform and provider of SPX communications support. The
following sections describe some of these parameters, particularly those that may
influence the operation of MQSeries channels and client connections.
The following IPX/SPX parameters can be added to the Novell NET.CFG file, and
can affect MQSeries SPX channels and client connections.
IPX:
sockets (range = 9 - 128, default 64)
This specifies the total number of IPX sockets available. MQSeries channels
use this resource, so depending on the number of channels and the
requirements of other IPX/SPX applications, you may need to increase this
value.
SPX:
sessions (default 16)
This specifies the total number of simultaneous SPX connections. Each
MQSeries channel or client connection uses one session. You may need to
increase this value depending on the number of MQSeries channels or
client connections you need to run.
retry count (default = 12)
This controls the number of times an SPX session will resend
unacknowledged packets. MQSeries does not override this value.
verify timeout, listen timeout, and abort timeout (milliseconds)
These timeouts adjust the ‘Keepalive’ behavior. If an SPX sending end does
not receive anything within the ‘verify timeout’ period, it sends a packet to
the receiving end. It then waits for the duration of the ‘listen timeout’ for a
response. If it still does not receive a response, it sends another packet and
expects a response within the ‘abort timeout’ period.
The following IPX/SPX parameters can be added to the Novell NET.CFG file, and
can affect MQSeries SPX channels and client connections.
IPX:
sockets (default = 20)
This specifies the total number of IPX sockets available. MQSeries channels
use this resource, so depending on the number of channels and the
requirements of other IPX/SPX applications, you may need to increase this
value.
retry count
This controls the number of times unacknowledged packets will be resent.
MQSeries does not override this value.
SPX:
connections (default 15)
This specifies the total number of simultaneous SPX connections. Each
MQSeries channel or client connection uses one session. You may need to
increase this value depending on the number of MQSeries channels or
client connections you need to run.
First it describes the parameters needed for an LU 6.2 connection, then it guides
you through the following tasks:
v “Establishing an LU 6.2 connection” on page 142
v “Establishing a TCP connection” on page 158
v “Establishing a NetBIOS connection” on page 160
v “Establishing an SPX connection” on page 160
Once the connection is established, you need to define some channels to complete
the configuration. This is described in “MQSeries for OS/2 Warp configuration” on
page 162.
This chapter shows how to use the values on the worksheet for:
v “Defining local node characteristics” on page 142
v “Connecting to a peer system” on page 150
v “Connecting to a host system” on page 153
v “Verifying the configuration” on page 157
Configuration worksheet
Use the following worksheet to record the values you will use for this
configuration. Where numbers appear in the Reference column they indicate that
the value must match that in the appropriate worksheet elsewhere in this book.
The values in this section of the table must match those used in Table 16 on page 170, as indicated.
«11¬ Link name WINNT
«12¬ LAN destination address (hex) «9¬ 08005AA5FAB9
«13¬ Partner network ID «2¬ NETID
«14¬ Partner node name «3¬ WINNTCP
«15¬ LU name «5¬ WINNTLU
«16¬ Alias (for remote LU name) NTQMGR
«17¬ Mode «17¬ #INTER
«18¬ Remote transaction program name «7¬ MQSERIES
Connection to an AIX system
The values in this section of the table must match those used in Table 20 on page 197, as indicated.
«11¬ Link name RS6000
«12¬ LAN destination address (hex) «8¬ 123456789012
«13¬ Partner network ID «1¬ NETID
«14¬ Partner node name «2¬ AIXPU
«15¬ LU name «4¬ AIXLU
«16¬ Alias (for remote LU name) AIXQMGR
«17¬ Mode «17¬ #INTER
«18¬ Remote transaction program name «6¬ MQSERIES
Connection to an HP-UX system
The values in this section of the table must match those used in Table 23 on page 219, as indicated.
«11¬ Link name HPUX
«12¬ LAN destination address (hex) «8¬ 100090DC2C7C
«13¬ Partner network ID «4¬ NETID
«14¬ Partner node name «2¬ HPUXPU
«15¬ LU name «5¬ HPUXLU
«16¬ Alias (for remote LU name) HPUXQMGR
«17¬ Mode «6¬ #INTER
«18¬ Remote transaction program name «7¬ MQSERIES
The values in this section of the table must match those used in Table 25 on page 243, as indicated.
«11¬ Link name GIS
«12¬ LAN destination address (hex) «8¬ 10007038E86B
«13¬ Partner network ID «2¬ NETID
«14¬ Partner node name «3¬ GISPU
«15¬ LU name «4¬ GISLU
«16¬ Alias (for remote LU name) GISQMGR
«17¬ Mode «15¬ #INTER
«18¬ Remote transaction program name «5¬ MQSERIES
Connection to a Sun Solaris system
The values in this section of the table must match those used in Table 27 on page 257, as indicated.
«11¬ Link name SOLARIS
«12¬ LAN destination address (hex) «5¬ 08002071CC8A
«13¬ Partner network ID «2¬ NETID
«14¬ Partner node name «3¬ SOLARPU
«15¬ LU name «7¬ SOLARLU
«16¬ Alias (for remote LU name) SOLQMGR
«17¬ Mode «17¬ #INTER
«18¬ Remote transaction program name «8¬ MQSERIES
Connection to an AS/400 system
The values in this section of the table must match those used in Table 42 on page 460, as indicated.
«11¬ Link name AS400
«12¬ LAN destination address (hex) «4¬ 10005A5962EF
«13¬ Partner network ID «1¬ NETID
«14¬ Partner node name «2¬ AS400PU
«15¬ LU name «3¬ AS400LU
«16¬ Alias (for remote LU name) AS4QMGR
«17¬ Mode «17¬ #INTER
«18¬ Remote transaction program name «8¬ MQSERIES
Connection to an OS/390 or MVS/ESA system without CICS
The values in this section of the table must match those used in Table 36 on page 396, as indicated.
«11¬ Link name HOST0001
«12¬ LAN destination address (hex) «8¬ 400074511092
«13¬ Partner network ID «2¬ NETID
«14¬ Partner node name «3¬ MVSPU
«15¬ LU name «4¬ MVSLU
«16¬ Alias (for remote LU name) MVSQMGR
«17¬ Mode «10¬ #INTER
«18¬ Remote transaction program name «7¬ MQSERIES
Connection to a VSE/ESA system
The values in this section of the table must match those used in Table 44 on page 485, as indicated.
«11¬ Link name HOST0001
Chapter 11. Example configuration - IBM MQSeries for OS/2 Warp 139
OS/2 and LU 6.2
Table 14. Configuration worksheet for Communications Manager/2 (continued)
ID Parameter Name Reference Example Used User Value
«12¬ LAN destination address (hex) «5¬ 400074511092
«13¬ Partner network ID «1¬ NETID
«14¬ Partner node name «2¬ VSEPU
«15¬ LU name «3¬ VSELU
«16¬ Alias (for remote LU name) VSEQMGR
«17¬ Mode #INTER
«18¬ Remote transaction program name «4¬ MQ01 MQ01
Explanation of terms
«1¬ Configuration name
This is the name of the OS/2 file that will hold the configuration.
If you are adding to or modifying an existing configuration it will be the
name previously specified.
If you are creating a new configuration then you can specify any
8-character name that obeys the normal rules for file naming.
«2¬ Network ID
This is the unique ID of the network to which you are connected. It is an
alphanumeric value and can be 1-8 characters long. The network ID works
with the local node name to uniquely identify a system. Your network
administrator will tell you the value.
«3¬ Local node name
This is the unique Control Point name for this workstation. Your network
administrator will assign this to you.
«4¬ Local node ID (hex)
This is a unique identifier for this workstation. On other platforms it is
often referred to as the exchange ID (XID). Your network administrator will
assign this to you.
«5¬ Local node alias name
This is the name by which your local node will be known within this
workstation. This value is not used elsewhere, but it is recommended that
it be the same as «3¬, the local node name.
«6¬ LU name (local)
An LU manages the exchange of data between systems. The local LU name
is the name of the LU on your system. Your network administrator will
assign this to you.
«7¬ Alias (for local LU name)
The name by which your local LU will be known to your applications. You
choose this name yourself. It can be 1-8 characters long. This value is used
during MQSeries configuration, when entries are added to the qm.ini file.
«8¬ Local transaction program (TP) name
MQSeries applications trying to converse with this workstation will specify
a symbolic name for the program to be run at the receiving end. This will
have been defined on the channel definition at the sender. The TP name is
also used during MQSeries configuration, when entries are added to the
qm.ini file. For simplicity, wherever possible use a transaction program
Chapter 11. Example configuration - IBM MQSeries for OS/2 Warp 141
Using Communications Manager/2
2. Press OK to continue.
4. Specify a name (up to 8-characters) for a new configuration file «1¬, or select
the one that you wish to update. The following examples guide you through
the creation of a new configuration file. Treat them as a guide if you are
modifying an existing configuration.
5. Press Yes.
6. Press Yes.
In this example we set up connections using APPC over Token-ring. The
following screen appears in two stages. When you first see it, highlight the line:
APPC APIs through Token-ring
Chapter 11. Example configuration - IBM MQSeries for OS/2 Warp 143
Using Communications Manager/2
7. Press Configure....
Configuring a DLC
1. Complete the values for Network ID («2¬) and Local node name («3¬).
a.
b. Select End node - no network node server.
c. Click on Advanced.
e. Enter the value for C&SM LAN ID. This should be the same value as the
Network ID entered earlier («2¬).
f. Leave the remaining default values and press OK.
2. Complete the value for Local node ID (hex) («4¬) using the values in your
configuration worksheet.
Chapter 11. Example configuration - IBM MQSeries for OS/2 Warp 145
Using Communications Manager/2
3. Press Options...
4. Complete the value for Local node alias name («5¬) and press OK.
5. Press OK.
Chapter 11. Example configuration - IBM MQSeries for OS/2 Warp 147
Using Communications Manager/2
2. Complete the values for Transaction program (TP) name («8¬) and OS/2
program path and file name («9¬). If you are going to use Attach Manager to
start the listener program, specify the Program parameter string, for example
-m OS2 -n MQSERIES.
3. Press Continue....
Configuring a mode
2. Ensure that the default values match those shown above and press Cancel.
Chapter 11. Example configuration - IBM MQSeries for OS/2 Warp 149
Using Communications Manager/2
Connecting to a peer system
To set up a connection to a peer system the steps are:
1. Adding a peer connection
2. Defining a partner LU
Defining a partner LU
1. Complete the fields Network ID («13¬), LU name («15¬), and Alias («16¬).
2. Press Add.
Chapter 11. Example configuration - IBM MQSeries for OS/2 Warp 151
Using Communications Manager/2
3. Press OK.
4. Press OK.
5. Press Close.
If you have made all the connections you require proceed to “Verifying the
configuration” on page 157 to complete Communications Manager/2 configuration.
Chapter 11. Example configuration - IBM MQSeries for OS/2 Warp 153
Using Communications Manager/2
Adding a host connection
Defining a partner LU
1. Complete the fields Network ID («13¬), LU name («15¬), and Alias («16¬).
2. Press Add
3. Press OK.
Chapter 11. Example configuration - IBM MQSeries for OS/2 Warp 155
Using Communications Manager/2
4. Press OK.
5. Press Close.
If you have made all the connections you require proceed to “Verifying the
configuration” on page 157 to complete Communications Manager/2 configuration.
2. Press Close.
3. Press Yes.
Chapter 11. Example configuration - IBM MQSeries for OS/2 Warp 157
Using Communications Manager/2
4. Press OK.
5. Press Close.
What next?
The LU 6.2 connection is now established. You are ready to complete the
configuration. Go to “MQSeries for OS/2 Warp configuration” on page 162.
The icons you see may vary from those shown above, depending on how you
have installed the product.
2. Start the TCP Configuration program.
3. On the Network page, ensure that the IP Address and Subnet Mask fields
have been completed.
4. Select the Autostart tab.
Note: You may see a panel warning that the inetd superserver has been
selected without selecting servers. Press No to indicate that you do not
wish to correct this.
If this line is not present, add it. Note that this assumes you have installed
MQSeries on the default drive and in the default directories.
12. (Re)start the inetd superserver, either by rebooting OS/2 or by stopping any
existing inetd superserver and then entering start inetd on the command
line.
What next?
The TCP connection is now established. You are ready to complete the
configuration. Go to “MQSeries for OS/2 Warp configuration” on page 162.
Chapter 11. Example configuration - IBM MQSeries for OS/2 Warp 159
OS/2 and NetBIOS
Optionally you may specify values for the queue manager name, NetBIOS local
name, number of sessions, number of names, and number of commands. See
“Defining a NetBIOS connection” on page 128 for more information about
setting up NetBIOS connections.
IPX/SPX parameters
In most cases the default settings for the IPX/SPX parameters will suit your needs.
However, you may need to modify some of them in your environment to tune its
use for MQSeries. The actual parameters and the method of changing them varies
according to the platform and provider of SPX communications support. The
Please refer to the Novell Client for OS/2 documentation for full details of the use
and setting of NET.CFG parameters.
The following IPX/SPX parameters can be added to the Novell NET.CFG file, and
can affect MQSeries SPX channels and client connections.
IPX
sockets (range = 9 - 128, default 64)
This specifies the total number of IPX sockets available. MQSeries channels
use this resource, so depending on the number of channels and the
requirements of other IPX/SPX applications, you may need to increase this
value.
SPX
sessions (default 16)
This specifies the total number of simultaneous SPX connections. Each
MQSeries channel or client connection uses one session. You may need to
increase this value depending on the number of MQSeries channels or
client connections you need to run.
retry count (default = 12)
This controls the number of times an SPX session will resend
unacknowledged packets. MQSeries does not override this value.
verify timeout, listen timeout, and abort timeout (milliseconds)
These timeouts adjust the ‘Keepalive’ behavior. If an SPX sending end does
not receive anything within the ‘verify timeout’ period, it sends a packet to
the receiving end. It then waits for the duration of the ‘listen timeout’ for a
response. If it still does not receive a response, it sends another packet and
expects a response within the ‘abort timeout’ period.
SPX addressing
MQSeries uses the SPX address of each machine to establish connectivity. The SPX
address is specified in the following form:
network.node(socket)
where
network
Is the 4-byte network address of the network on which the remote machine
resides,
node Is the 6-byte node address, which is the LAN address of the LAN adapter
in the remote machine
socket Is the 2-byte socket number on which the remote machine will listen.
The default socket number used by MQSeries is 5E86. You can change the default
socket number by specifying it in the queue manager configuration file qm.ini or
the Windows NT registry. If you have taken the default options for installation, the
qm.ini file for queue manager OS2 is found in c:\mqm\qmgs\os2. The lines in
qm.ini might read:
SPX:
SOCKET=n
Chapter 11. Example configuration - IBM MQSeries for OS/2 Warp 161
OS/2 and SPX
For more information about values you can set in qm.ini, see “Appendix D.
Configuration file stanzas for distributed queuing” on page 637.
The SPX address is later specified in the CONNAME parameter of the sender
channel definition. If the MQSeries systems being connected reside on the same
network, the network address need not be specified. Similarly, if the remote system
is listening on the default socket number (5E86), it need not be specified. A fully
qualified SPX address in the CONNAME parameter would be:
CONNAME('network.node(socket)')
but if the systems reside on the same network and the default socket number is
used, the parameter would be:
CONNAME(node)
You can use the timeout parameters described above to adjust the behavior of
KEEPALIVE.
Receiving on SPX
Receiving channel programs are started in response to a startup request from the
sending channel. To do this, a listener program has to be started to detect incoming
network requests and start the associated channel.
Optionally you may specify the queue manager name or the socket number if you
are not using the defaults.
displays the contents of the queue q_name defined in queue manager qmgr_name.
2. The MQSeries command used to start the TCP listener is:
runmqlsr -t tcp
Basic configuration
1. Create the queue manager from the OS/2 command line using the command:
crtmqm -u dlqname -q os2
where:
os2 Is the name of the queue manager
-q Indicates that this is to become the default queue manager
-u dlqname
Specifies the name of the undeliverable message queue
This command creates a queue manager and a set of default objects, and sets
the DEADQ attribute of the queue manager.
2. For SNA channels add an LU 6.2 stanza to the queue manager’s qm.ini file:
LU62:
TPName=MQSERIES «8¬
LocalLU=OS2QMGR «7¬
If you have taken the default options for installation, the qm.ini file for queue
manager os2 is found in c:\mqm\qmgrs\os2.
3. Start the queue manager from the OS/2 command line using the command:
strmqm os2
where os2 is the name given to the queue manager when it was created.
Channel configuration
The following sections detail the configuration to be performed on the OS/2 queue
manager to implement the channel described in Figure 32 on page 97. In each case
the MQSC command is shown.
Examples are given for connecting MQSeries for OS/2 Warp and MQSeries for
Windows NT. If you wish connect to another MQSeries product use the
appropriate set of values from the table in place of those for Windows NT.
Note: The words in bold are user-specified and reflect the names of MQSeries
objects used throughout these examples. If you change the names used here,
ensure that you also change the other references made to these objects
throughout this book. All others are keywords and should be entered as
shown.
Chapter 11. Example configuration - IBM MQSeries for OS/2 Warp 163
OS/2 configuration
Table 15. Configuration worksheet for MQSeries for OS/2 Warp
Parameter Name Reference Example Used User Value
Definition for local node
«A¬ Queue Manager Name OS2
«B¬ Local queue name OS2.LOCALQ
Connection to MQSeries for Windows NT
The values in this section of the table must match those used in Table 17 on page 185, as indicated.
«C¬ Remote queue manager name «A¬ WINNT
«D¬ Remote queue name WINNT.REMOTEQ
«E¬ Queue name at remote system «B¬ WINNT.LOCALQ
«F¬ Transmission queue name WINNT
«G¬ Sender (SNA) channel name OS2.WINNT.SNA
«H¬ Sender (TCP/IP) channel name OS2.WINNT.TCP
«I¬ Receiver (SNA) channel name «G¬ WINNT.OS2.SNA
«J¬ Receiver (TCP/IP) channel name «H¬ WINNT.OS2.TCP
«K¬ Sender (NetBIOS) channel name OS2.WINNT.NET
«L¬ Sender (SPX) channel name OS2.WINNT.SPX
«M¬ Receiver (NetBIOS) channel name «K¬ WINNT.OS2.NET
«N¬ Receiver (SPX) channel name «L¬ WINNT.OS2.SPX
Connection to MQSeries for AIX
The values in this section of the table must match those used in Table 21 on page 211, as indicated.
«C¬ Remote queue manager name «A¬ AIX
«D¬ Remote queue name AIX.REMOTEQ
«E¬ Queue name at remote system «B¬ AIX.LOCALQ
«F¬ Transmission queue name AIX
«G¬ Sender (SNA) channel name OS2.AIX.SNA
«H¬ Sender (TCP/IP) channel name OS2.AIX.TCP
«I¬ Receiver (SNA) channel name «G¬ AIX.OS2.SNA
«J¬ Receiver (TCP) channel name «H¬ AIX.OS2.TCP
| Connection to MQSeries for DIGITAL UNIX (Compaq Tru64 UNIX)
| The values in this section of the table must match those used in Table 22 on page 216, as indicated.
| «C¬ Remote queue manager name «A¬ DECUX
| «D¬ Remote queue name DECUX.REMOTEQ
| «E¬ Queue name at remote system «B¬ DECUX.LOCALQ
| «F¬ Transmission queue name DECUX
| «H¬ Sender (TCP) channel name DECUX.OS2.TCP
| «J¬ Receiver (TCP) channel name «H¬ OS2.DECUX.TCP
Connection to MQSeries for HP-UX
The values in this section of the table must match those used in Table 24 on page 239, as indicated.
«C¬ Remote queue manager name «A¬ HPUX
«D¬ Remote queue name HPUX.REMOTEQ
«E¬ Queue name at remote system «B¬ HPUX.LOCALQ
«F¬ Transmission queue name HPUX
«G¬ Sender (SNA) channel name OS2.HPUX.SNA
«H¬ Sender (TCP) channel name OS2.HPUX.TCP
«I¬ Receiver (SNA) channel name «G¬ HPUX.OS2.SNA
The values in this section of the table must match those used in Table 26 on page 253, as indicated.
«C¬ Remote queue manager name «A¬ GIS
«D¬ Remote queue name GIS.REMOTEQ
«E¬ Queue name at remote system «B¬ GIS.LOCALQ
«F¬ Transmission queue name GIS
«G¬ Sender (SNA) channel name OS2.GIS.SNA
«H¬ Sender (TCP) channel name OS2.GIS.TCP
«I¬ Receiver (SNA) channel name «G¬ GIS.OS2.SNA
«J¬ Receiver (TCP) channel name «H¬ GIS.OS2.TCP
Connection to MQSeries for Sun Solaris
The values in this section of the table must match those used in Table 28 on page 272, as indicated.
«C¬ Remote queue manager name SOLARIS
«D¬ Remote queue name SOLARIS.REMOTEQ
«E¬ Queue name at remote system «B¬ SOLARIS.LOCALQ
«F¬ Transmission queue name SOLARIS
«G¬ Sender (SNA) channel name OS2.SOLARIS.SNA
«H¬ Sender (TCP/IP) channel name OS2.SOLARIS.TCP
«I¬ Receiver (SNA) channel name «G¬ SOLARIS.OS2.SNA
«J¬ Receiver (TCP/IP) channel name «H¬ SOLARIS.OS2.TCP
| Connection to MQSeries for AS/400
| The values in this section of the table must match those used in Table 43 on page 472, as indicated.
| «C¬ Remote queue manager name AS400
| «D¬ Remote queue name AS400.REMOTEQ
| «E¬ Queue name at remote system «B¬ AS400.LOCALQ
| «F¬ Transmission queue name AS400
| «G¬ Sender (SNA) channel name OS2.AS400.SNA
| «H¬ Sender (TCP/IP) channel name OS2.AS400.TCP
| «I¬ Receiver (SNA) channel name «G¬ AS400.OS2.SNA
| «J¬ Receiver (TCP) channel name «H¬ AS400.OS2.TCP
Connection to MQSeries for OS/390 or MVS/ESA without CICS
The values in this section of the table must match those used in Table 37 on page 406, as indicated.
«C¬ Remote queue manager name MVS
«D¬ Remote queue name MVS.REMOTEQ
«E¬ Queue name at remote system «B¬ MVS.LOCALQ
«F¬ Transmission queue name MVS
«G¬ Sender (SNA) channel name OS2.MVS.SNA
«H¬ Sender (TCP) channel name OS2.MVS.TCP
«I¬ Receiver (SNA) channel name «G¬ MVS.OS2.SNA
«J¬ Receiver (TCP) channel name «H¬ MVS.OS2.TCP
Connection to MQSeries for VSE/ESA
The values in this section of the table must match those used in Table 45 on page 490, as indicated.
Chapter 11. Example configuration - IBM MQSeries for OS/2 Warp 165
OS/2 configuration
Table 15. Configuration worksheet for MQSeries for OS/2 Warp (continued)
Parameter Name Reference Example Used User Value
«C¬ Remote queue manager name VSE
«D¬ Remote queue name VSE.REMOTEQ
«E¬ Queue name at remote system «B¬ VSE.LOCALQ
«F¬ Transmission queue name VSE
«G¬ Sender channel name OS2.VSE.SNA
«I¬ Receiver channel name «G¬ VSE.OS2.SNA
Most installations will select to run their sender channels as threads, because the
virtual and real memory required to support a large number of concurrent channel
connections will be reduced. When the MQSeries listener process (started via the
Chapter 11. Example configuration - IBM MQSeries for OS/2 Warp 167
OS/2 configuration
RUNMQLSR command) exhausts the available private memory needed, an
additional listener process will need to be started to support more channel
connections. When each channel runs as a process, additional processes are
automatically started, avoiding the out-of-memory condition.
If all channels are run as threads under one MQSeries listener, a failure of the
listener for any reason will cause all channel connections to be temporarily lost.
This can be prevented by balancing the threaded channel connections across two or
more listener processes, thus enabling other connections to keep running. If each
sender channel is run as a separate process, the failure of the listener for that
process will affect only that specific channel connection.
A NetBIOS connection needs a separate process for the Message Channel Agent.
Therefore, before you can issue a START CHANNEL command, you must start the
channel initiator, or you may start a channel using the RUNMQCHL command.
This chapter first describes the parameters needed for an LU 6.2 connection, then it
guides you through the following tasks:
v “Establishing an LU 6.2 connection” on page 174
v “Establishing a TCP connection” on page 181
v “Establishing a NetBIOS connection” on page 181
v “Establishing an SPX connection” on page 182
Once the connection is established, you need to define some channels to complete
the configuration. This is described in “MQSeries for Windows NT configuration”
on page 184.
The steps required to set up an LU 6.2 connection are described, with numbered
cross references to the parameters on the worksheet. These steps are:
v “Configuring the local node” on page 174
v “Adding a connection” on page 176
v “Adding a partner” on page 178
v “Adding a CPI-C entry” on page 179
v “Configuring an invokable TP” on page 179
The values in this section of the table must match those used in Table 14 on page 138, as indicated.
«10¬ Connection OS2
«11¬ Remote Network Address «10¬ 10005AFC5D83
«12¬ Network Name «2¬ NETID
«13¬ Control Point Name «3¬ OS2PU
«14¬ Remote Node ID «4¬ 05D 12345
«15¬ LU Alias (remote) OS2QMGR
«16¬ LU Name «6¬ OS2LU
«17¬ Mode «17¬ #INTER
«18¬ CPI-C Name OS2CPIC
«19¬ Partner TP Name «8¬ MQSERIES
Connection to an AIX system
The values in this section of the table must match those used in Table 20 on page 197, as indicated.
«10¬ Connection AIX
«11¬ Remote Network Address «8¬ 123456789012
«12¬ Network Name «1¬ NETID
«13¬ Control Point Name «2¬ AIXPU
«14¬ Remote Node ID «3¬ 071 23456
«15¬ LU Alias (remote) AIXQMGR
«16¬ LU Name «4¬ AIXLU
«17¬ Mode «14¬ #INTER
«18¬ CPI-C Name AIXCPIC
«19¬ Partner TP Name «6¬ MQSERIES
Connection to an HP-UX system
The values in this section of the table must match those used in Table 23 on page 219, as indicated.
«10¬ Connection HPUX
«11¬ Remote Network Address «8¬ 100090DC2C7C
The values in this section of the table must match those used in Table 25 on page 243, as indicated.
«10¬ Connection GIS
«11¬ Remote Network Address «8¬ 10007038E86B
«12¬ Network Name «2¬ NETID
«13¬ Control Point Name «3¬ GISPU
«14¬ Remote Node ID «9¬ 03E 00018
«15¬ LU Alias (remote) GISQMGR
«16¬ LU Name «4¬ GISLU
«17¬ Mode «15¬ #INTER
«18¬ CPI-C Name GISCPIC
«19¬ Partner TP Name «5¬ MQSERIES
Connection to a Sun Solaris system
The values in this section of the table must match those used in Table 27 on page 257, as indicated.
«10¬ Connection SOLARIS
«11¬ Remote Network Address «5¬ 08002071CC8A
«12¬ Network Name «2¬ NETID
«13¬ Control Point Name «3¬ SOLARPU
«14¬ Remote Node ID «6¬ 05D 310D6
«15¬ LU Alias (remote) SOLARQMGR
«16¬ LU Name «7¬ SOLARLU
«17¬ Mode «17¬ #INTER
«18¬ CPI-C Name SOLCPIC
«19¬ Partner TP Name «8¬ MQSERIES
Connection to an AS/400 system
The values in this section of the table must match those used in Table 42 on page 460, as indicated.
«10¬ Connection AS400
«11¬ Remote Network Address «4¬ 10005A5962EF
«12¬ Network Name «1¬ NETID
«13¬ Control Point Name «2¬ AS400PU
«14¬ Remote Node ID
«15¬ LU Alias (remote) AS400QMGR
«16¬ LU Name «3¬ AS400LU
«17¬ Mode «17¬ #INTER
«18¬ CPI-C Name AS4CPIC
«19¬ Partner TP Name «8¬ MQSERIES
The values in this section of the table must match those used in Table 36 on page 396, as indicated.
«10¬ Connection MVS
«11¬ Remote Network Address «8¬ 400074511092
«12¬ Network Name «2¬ NETID
«13¬ Control Point Name «3¬ MVSPU
«14¬ Remote Node ID
«15¬ LU Alias (remote) MVSQMGR
«16¬ LU Name «4¬ MVSLU
«17¬ Mode «10¬ #INTER
«18¬ CPI-C Name MVSCPIC
«19¬ Partner TP Name «7¬ MQSERIES
Connection to a VSE/ESA system
The values in this section of the table must match those used in Table 44 on page 485, as indicated.
«10¬ Connection MVS
«11¬ Remote Network Address «5¬ 400074511092
«12¬ Network Name «1¬ NETID
«13¬ Control Point Name «2¬ VSEPU
«14¬ Remote Node ID
«15¬ LU Alias (remote) VSEQMGR
«16¬ LU Name «3¬ VSELU
«17¬ Mode #INTER
«18¬ CPI-C Name VSECPIC
«19¬ Partner TP Name «4¬ MQ01 MQ01
Explanation of terms
«1¬ Configuration Name
This is the name of the file in which the Communications Server
configuration is saved.
«2¬ Network Name
This is the unique ID of the network to which you are connected. It is an
alphanumeric value and can be 1-8 characters long. The network name
works with the Control Point Name to uniquely identify a system. Your
network administrator will tell you the value.
«3¬ Control Point Name
In Advanced Peer-to-Peer® Networking (APPN)®, a control point is
responsible for managing a node and its resources. A control point is also a
logical unit (LU). The Control Point Name is the name of the LU and is
assigned to your system by the network administrator.
«4¬ Local Node ID (hex)
Some SNA products require partner systems to specify a node identifier
that uniquely identifies their workstation. The two systems exchange this
node identifier in a message unit called the exchange identifier (XID). Your
network administrator will assign this ID for you.
3. In the Fully qualified CP name field on the Basic page, enter the unique ID of
the network to which you are connected («2¬) and the control point name («3¬).
Click on OK to continue.
4. From the SNA Node Configuration window, click on Configure Local LU 6.2,
then click on New. The Define a Local LU 6.2 window is displayed.
Adding a connection
To add a connection, follow these steps:
1. From the SNA Node Configuration window, select Configure Devices, select
LAN as the DLC type, then click on New. The Define a LAN Device property
sheet is displayed.
2. If you have the LLC2 protocol installed with Communications Server for
Windows NT, the Adapter number list box lists the available LAN adapters.
See the help file INLLC40.HLP (Windows NT 4.0) or INLLC35.HLP (Windows
NT 3.51) in the Communications Server installation directory for LLC2
installation instructions.
3. The default values displayed on the Define a LAN Device Basic page may be
accepted. Click on OK to continue.
4. From the SNA Node Configuration window, select Configure Connections,
select LAN as the DLC type, then click on New. The Define a LAN Connection
property sheet is displayed.
5. In the Destination address field on the Basic page, enter the LAN address of
the system to which you are connecting («11¬). Select the Advanced page.
6. In the Block ID field on the Advanced page, enter the local node ID (hex)
(«4¬). Select the Security page.
7. In the Adjacent CP name field on the Security page, enter the network name
and control point name of the remote node («12¬ and «13¬). In the Adjacent CP
type field, enter APPN Node. You do not need to complete the Adjacent node ID
field for a peer-to-peer connection. Click on OK to continue. Take note of the
default link name used to identify this new definition (for example, LINK0000).
Adding a partner
To add a partner LU definition, follow these steps:
1. From the SNA Node Configuration window, select Configure Partner LU 6.2,
then click on New. The Define a Partner LU 6.2 property sheet is displayed.
2. In the Partner LU name field on the Basic page, enter the network name («12¬)
and LU name of the remote system («16¬). In the Partner LU alias field, enter
the remote LU alias («15¬). In the Fully qualified CP name fields, enter the
network name and control point name of the remote system («12¬ and «13¬).
Click on OK to continue.
2. In the Symbolic destination name field of the Basic page, enter the CPI-C
name («18¬). In the Mode name field, enter the mode value («17¬). Enter either
a fully qualified partner LU name («12¬.«16¬) or a partner LU alias («15¬)
depending on what you choose in the CPI-C Side Information property sheet.
In the TP name field, enter the partner TP name («19¬). Click on OK to
continue.
Configuring an invokable TP
To add a Transaction Program (TP) definition, follow these steps:
1. From the SNA Node Configuration window, select Configure Transaction
Programs, then click on New. The Define a Transaction Program property sheet
is displayed.
2. In the TP name field on the Basic page, enter the transaction program name
(«7¬). In the Complete pathname field, enter the actual path and name of the
the program that will be run when a conversation is initiated with your
workstation («8¬). When you are happy with the settings, click on OK to
continue.
3. In order to be able to stop the MQSeries Transaction Program, you need to start
it in one of the following ways:
a. Check Service TP on the Basic page. This starts the TP programs at
Windows NT startup and will run the programs under the system user ID.
b. Check Dynamically loaded on the Advanced page. This dynamically loads
and starts the programs as and when incoming SNA conversation requests
arrive. It will run the programs under the same user ID as the rest of
MQSeries.
From the SNA Node Operations application, start the node by clicking the Start
node button on the toolbar. Specify the file name of the configuration you just
saved. (It should appear in the file-name box by default, because you identified it
as your default configuration.) When the node startup is complete, ensure that
your link to the remote node has been established by selecting the Connections
button on the toolbar, then find the link name you configured (for example,
LINK0000). The link should be active if the remote node is active waiting for the
link to be established.
A complementary SNA setup process is required on the node to which you are
connecting before you can attempt MQSeries server-to-server message
transmissions.
The LU 6.2 connection is now established. You are ready to complete the
configuration. Go to “MQSeries for Windows NT configuration” on page 184.
The listener must be started explicitly before any channels are started.
What next?
When the TCP/IP connection is established, you are ready to complete the
configuration. Go to “MQSeries for Windows NT configuration” on page 184.
Each MQSeries process must use a different local NetBIOS name. Do not use
your machine name as the NetBIOS name because Windows NT already uses it.
You must specify the option MCATYPE(THREAD) because, on Windows NT, sender
channels must be run as threads.
5. At the receiving end, define the corresponding receiver channel. For example:
DEFINE CHANNEL (WINNT.OS2.NET) CHLTYPE(RCVR) +
TRPTYPE(NETBIOS) +
REPLACE
6. Start the channel initiator because each new channel is started as a thread
rather than as a new process.
runmqchi
7. At the receiving end, start the MQSeries listener:
runmqlsr -t netbios
Optionally you may specify values for the queue manager name, NetBIOS local
name, number of sessions, number of names, and number of commands. See
“Defining a NetBIOS connection” on page 128 for more information about
setting up NetBIOS connections.
IPX/SPX parameters
Please refer to the Microsoft documentation for full details of the use and setting of
the NWLink IPX and SPX parameters. The IPX/SPX parameters are in the
following paths in the registry:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Service\NWLinkSPX\Parameters
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Service\NWLinkIPX\Parameters
where
network
Is the 4-byte network address of the network on which the remote machine
resides,
node Is the 6-byte node address, which is the LAN address of the LAN adapter
in the remote machine
socket Is the 2-byte socket number on which the remote machine will listen.
The default socket number used by MQSeries is 5E86. You can change the default
socket number by specifying it in the the Windows NT registry or in the queue
manager configuration file qm.ini. If you have taken the default options for
installation, the qm.ini file for queue manager OS2 is found in c:\mqm\qmgs\os2.
The lines in the Windows NT registry might read:
SPX:
SOCKET=n
For more information about values you can set in qm.ini, see “Appendix D.
Configuration file stanzas for distributed queuing” on page 637.
The SPX address is later specified in the CONNAME parameter of the sender
channel definition. If the MQSeries systems being connected reside on the same
network, the network address need not be specified. Similarly, if the remote system
is listening on the default socket number (5E86), it need not be specified. A fully
qualified SPX address in the CONNAME parameter would be:
CONNAME('network.node(socket)')
but if the systems reside on the same network and the default socket number is
used, the parameter would be:
CONNAME(node)
Receiving on SPX
Receiving channel programs are started in response to a startup request from the
sending channel. To do this, a listener program has to be started to detect incoming
network requests and start the associated channel.
Optionally you may specify the queue manager name or the socket number if you
are not using the defaults.
displays the contents of the queue q_name defined in queue manager qmgr_name.
Alternatively, you can use the message browser in the MQSeries Explorer.
2. The MQSeries command used to start the TCP/IP listener is:
runmqlsr -t tcp
Default configuration
You can create a default configuration by using either the First Steps application or
the MQSeries Postcard application to guide you through the process. For
information about this, see the MQSeries System Administration book.
Basic configuration
You can create and start a queue manager from the MQSeries Explorer or from the
command prompt.
where:
winnt Is the name of the queue manager
-q Indicates that this is to become the default queue manager
-u dlqname
Specifies the name of the undeliverable message queue
where winnt is the name given to the queue manager when it was created.
In each case the MQSC command is shown. Either start runmqsc from a command
prompt and enter each command in turn, or build the commands into a command
file.
Examples are given for connecting MQSeries for Windows NT and MQSeries for
OS/2 Warp. If you wish to connect to another MQSeries product use the
appropriate set of values from the table in place of those for OS/2.
Note: The words in bold are user-specified and reflect the names of MQSeries
objects used throughout these examples. If you change the names used here,
ensure that you also change the other references made to these objects
throughout this book. All others are keywords and should be entered as
shown.
Table 17. Configuration worksheet for MQSeries for Windows NT
Parameter Name Reference Example Used User Value
Definition for local node
«A¬ Queue Manager Name WINNT
«B¬ Local queue name WINNT.LOCALQ
Connection to MQSeries for OS/2 Warp
The values in this section of the table must match those used in Table 15 on page 164, as indicated.
«C¬ Remote queue manager name «A¬ OS2
«D¬ Remote queue name OS2.REMOTEQ
«E¬ Queue name at remote system «B¬ OS2.LOCALQ
«F¬ Transmission queue name OS2
«G¬ Sender (SNA) channel name WINNT.OS2.SNA
«H¬ Sender (TCP/IP) channel name WINNT.OS2.TCP
«I¬ Receiver (SNA) channel name «G¬ OS2.WINNT.SNA
«J¬ Receiver (TCP) channel name «H¬ OS2.WINNT.TCP
«K¬ Sender (NetBIOS) channel name WINNT.OS2.NET
«L¬ Sender (SPX) channel name WINNT.OS2.SPX
«M¬ Receiver (NetBIOS) channel name «K¬ OS2.WINNT.NET
«N¬ Receiver (SPX) channel name «L¬ OS2.WINNT.SPX
Connection to MQSeries for AIX
The values in this section of the table must match those used in Table 21 on page 211, as indicated.
«C¬ Remote queue manager name «A¬ AIX
«D¬ Remote queue name AIX.REMOTEQ
«E¬ Queue name at remote system «B¬ AIX.LOCALQ
«F¬ Transmission queue name AIX
«G¬ Sender (SNA) channel name WINNT.AIX.SNA
«H¬ Sender (TCP) channel name WINNT.AIX.TCP
«I¬ Receiver (SNA) channel name «G¬ AIX.WINNT.SNA
«J¬ Receiver (TCP) channel name «H¬ AIX.WINNT.TCP
| Connection to MQSeries for DIGITAL UNIX (Compaq Tru64 UNIX)
| The values in this section of the table must match those used in Table 22 on page 216, as indicated.
The values in this section of the table must match those used in Table 24 on page 239, as indicated.
«C¬ Remote queue manager name «A¬ HPUX
«D¬ Remote queue name HPUX.REMOTEQ
«E¬ Queue name at remote system «B¬ HPUX.LOCALQ
«F¬ Transmission queue name HPUX
«G¬ Sender (SNA) channel name WINNT.HPUX.SNA
«H¬ Sender (TCP) channel name WINNT.HPUX.TCP
«I¬ Receiver (SNA) channel name «G¬ HPUX.WINNT.SNA
«J¬ Receiver (TCP/IP) channel name «H¬ HPUX.WINNT.TCP
Connection to MQSeries for AT&T GIS UNIX
The values in this section of the table must match those used in Table 26 on page 253, as indicated.
«C¬ Remote queue manager name «A¬ GIS
«D¬ Remote queue name GIS.REMOTEQ
«E¬ Queue name at remote system «B¬ GIS.LOCALQ
«F¬ Transmission queue name GIS
«G¬ Sender (SNA) channel name WINNT.GIS.SNA
«H¬ Sender (TCP/IP) channel name WINNT.GIS.TCP
«I¬ Receiver (SNA) channel name «G¬ GIS.WINNT.SNA
«J¬ Receiver (TCP/IP) channel name «H¬ GIS.WINNT.TCP
Connection to MQSeries for Sun Solaris
The values in this section of the table must match those used in Table 28 on page 272, as indicated.
«C¬ Remote queue manager name SOLARIS
«D¬ Remote queue name SOLARIS.REMOTEQ
«E¬ Queue name at remote system «B¬ SOLARIS.LOCALQ
«F¬ Transmission queue name SOLARIS
«G¬ Sender (SNA) channel name WINNT.SOLARIS.SNA
«H¬ Sender (TCP) channel name WINNT.SOLARIS.TCP
«I¬ Receiver (SNA) channel name «G¬ SOLARIS.WINNT.SNA
«J¬ Receiver (TCP) channel name «H¬ SOLARIS.WINNT.TCP
| Connection to MQSeries for AS/400
| The values in this section of the table must match those used in Table 43 on page 472, as indicated.
| «C¬ Remote queue manager name AS400
| «D¬ Remote queue name AS400.REMOTEQ
| «E¬ Queue name at remote system «B¬ AS400.LOCALQ
| «F¬ Transmission queue name AS400
| «G¬ Sender (SNA) channel name WINNT.AS400.SNA
| «H¬ Sender (TCP) channel name WINNT.AS400.TCP
The values in this section of the table must match those used in Table 37 on page 406, as indicated.
«C¬ Remote queue manager name MVS
«D¬ Remote queue name MVS.REMOTEQ
«E¬ Queue name at remote system «B¬ MVS.LOCALQ
«F¬ Transmission queue name MVS
«G¬ Sender (SNA) channel name WINNT.MVS.SNA
«H¬ Sender (TCP) channel name WINNT.MVS.TCP
«I¬ Receiver (SNA) channel name «G¬ MVS.WINNT.SNA
«J¬ Receiver (TCP/IP) channel name «H¬ MVS.WINNT.TCP
Connection to MQSeries for VSE/ESA
The values in this section of the table must match those used in Table 45 on page 490, as indicated.
«C¬ Remote queue manager name VSE
«D¬ Remote queue name VSE.REMOTEQ
«E¬ Queue name at remote system «B¬ VSE.LOCALQ
«F¬ Transmission queue name VSE
«G¬ Sender channel name WINNT.VSE.SNA
«I¬ Receiver channel name «G¬ VSE.WINNT.SNA
Automatic startup
MQSeries for Windows NT allows you to automate the startup of a queue manager
and its channel initiator, channels, listeners, and command servers. Use the IBM
MQSeries Services snap-in to define the services for the queue manager. When you
have successfully completed testing of your communications setup, set the relevant
services to automatic within the snap-in. This file can be read by the supplied
MQSeries service when the system is started.
For more information about this, see the MQSeries System Administration book.
Most installations will select to run their sender channels as threads, because the
virtual and real memory required to support a large number of concurrent channel
connections will be reduced. When the MQSeries listener process (started via the
RUNMQLSR command) exhausts the available private memory needed, an
additional listener process will need to be started to support more channel
connections. When each channel runs as a process, additional processes are
automatically started, avoiding the out-of-memory condition.
If all channels are run as threads under one MQSeries listener, a failure of the
listener for any reason will cause all channel connections to be temporarily lost.
This can be prevented by balancing the threaded channel connections across two or
more listener processes, thus enabling other connections to keep running. If each
sender channel is run as a separate process, the failure of the listener for that
process will affect only that specific channel connection.
A NetBIOS connection needs a separate process for the Message Channel Agent.
Therefore, before you can issue a START CHANNEL command, you must start the
channel initiator, or you may start a channel using the RUNMQCHL command.
For OS/2 and Windows NT, see “Chapter 10. Setting up communication for OS/2
and Windows NT” on page 123. For Digital OpenVMS, see “Chapter 19. Setting up
communication in Digital OpenVMS systems” on page 277. For Tandem NSK, see
“Chapter 20. Setting up communication in Tandem NSK” on page 289.
Deciding on a connection
There are three forms of communication for MQSeries on UNIX systems:
v TCP
v LU 6.2
v UDP (MQSeries for AIX only)
Each channel definition must specify one only as the transmission protocol
(Transport Type) attribute. One or more protocols may be used by a queue
manager.
For MQSeries clients, it may be useful to have alternative channels using different
transmission protocols. See the MQSeries Clients book.
Sending end
Specify the host name, or the TCP address of the target machine, in the Connection
Name field of the channel definition. The port to connect to will default to 1414.
Port number 1414 is assigned by the Internet Assigned Numbers Authority to
MQSeries.
where REMHOST is the hostname of the remote machine and 1822 is the port number
required. (This must be the port that the listener at the receiving end is listening
on.)
Alternatively you can change the port number by specifying it in the queue
manager configuration file (qm.ini):
TCP:
Port=1822
For more information about the values you set using QM.INI, see “Appendix D.
Configuration file stanzas for distributed queuing” on page 637.
Receiving on TCP
You should use either the TCP/IP listener (INETD) or the MQSeries listener.
The updates are active after inetd has reread the configuration files. To do this,
issue the following commands from the root user ID:
v On AIX:
refresh -s inetd
v On HP-UX:
inetd -c
v On other UNIX systems:
kill -1 <process number>
| When the listener program started by INETD inherits the locale from INETD, it is
| possible that the MQMDE will not be honored and will be placed on the queue as
| message data. To ensure that the MQMDE is honored (merged), you must set the
| locale correctly. The locale set by INETD may not match that chosen for other
| locales used by MQSeries processes. To set the locale:
| 1. Create a shell script which sets the locale environment variables LANG,
| LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME, and
| LC_MESSAGES to the locale used for other MQSeries process.
| 2. In the same shell script, call the listener program.
| 3. Modify the inetd.conf file to call your shell script in place of the listener
| program.
This avoids error messages being generated if there is a limitation on the number
of outstanding connection requests queued at a single TCP port. For information
about the number of outstanding connection requests, see “Using the TCP listener
backlog option”.
If the backlog reaches the values shown in Table 18, the TCP/IP connection is
rejected and the channel will not be able to start.
For MCA channels, this results in the channel going into a RETRY state and
retrying the connection at a later time.
However, to avoid this error, you can add an entry in the qm.ini file:
TCP:
ListenerBacklog = n
This overrides the default maximum number of outstanding requests (see Table 18)
for the TCP/IP listener.
Note: Some operating systems support a larger value than the default. If necessary,
this can be used to avoid reaching the connection limit.
To run the listener with the backlog option switched on, use the RUNMQLSR -B
command. For information about the RUNMQLSR command, see the MQSeries System
Administration book.
For the best performance, run the MQSeries listener as a trusted application as
described in “Running channels and listeners as trusted applications” on page 121.
See the MQSeries Application Programming Guide for information about trusted
applications.
You can stop all MQSeries listeners running on a queue manager that is inactive,
using the command:
endmqlsr [-m QMNAME]
If you do not specify a queue manager name, the default queue manager is
assumed.
On some UNIX systems, you can define how long TCP waits before checking that
the connection is still available, and how frequently it retries the connection if the
first check fails. This is either a kernel tunable parameter, or can be entered at the
command line. See the documentation for your UNIX system for more information.
On MQSeries for SINIX and DC/OSx you can set the TCP keepalive parameters by
using the idtune and idbuild commands to modify the TCP_KEEPCNT and
TCP_KEEPINT values for the kernel configuration. The default configuration is to
retry 7 times at 7200 second (2 hourly) intervals.
See the Multiplatform APPC Configuration Guide and the following table for
information.
Table 19. Settings on the local UNIX system for a remote queue manager platform
Remote platform TPNAME TPPATH
OS/390 or The same as the corresponding -
MVS/ESA TPName in the side information on
without CICS the remote queue manager.
OS/390 or CKRC (sender) CKSV (requester) -
MVS/ESA using CKRC (server)
CICS
OS/400 The same as the compare value in -
the routing entry on the OS/400
system.
If you have more than one queue manager on the same machine, ensure that the
TPnames in the channel definitions are unique.
Sending end
v On UNIX systems other than SINIX, and DC/OSx, create a CPI-C side object
(symbolic destination) and enter this name in the Connection name field in the
channel definition. Also create an LU 6.2 link to the partner.
In the CPI-C side object enter the partner LU name at the receiving machine, the
transaction program name and the mode name. For example:
Partner LU Name REMHOST
Remote TP Name recv
Service Transaction Program no
Mode Name #INTER
On HP-UX, use the APPCLLU environment variable to name the local LU that
the sender should use. On Sun Solaris, set the APPC_LOCAL_LU environment
variable to be the local LU name.
See the MQSeries for SINIX and DC/OSx System Management Guide for more
information about the TRANSIT KOGS file.
v On DC/OSx, create an entry in the /etc/opt/lu62/cpic_cfg file, for example:
sendMP01 <local LU name> <remote LU name> <mode name> <remote TP name>
Receiving on LU 6.2
v On UNIX systems other than SINIX, and DC/OSx, create a listening attachment
at the receiving end, an LU 6.2 logical connection profile, and a TPN profile.
On systems where you can set the User ID, you should specify a user who is a
member of the mqm group. On HP-UX, set the APPCTPN (transaction name)
and APPCLLU (local LU name) environment variables (you can use the
configuration panels for the invoked transaction program). On Sun Solaris, set
the APPC_LOCAL_LU environment variable to be the local LU name.
On Sun Solaris, amqcrs6a requires the option -n tp_name, where tp_name is the
TP name on the receiving end of the SNA connection. It is the value of the
tp_path variable in the SunLink configuration file.
You may need to use a queue manager other than the default queue manager. If
so, define a command file that calls:
amqcrs6a -m Queue_Man_Name
then call the command file. On AIX, this only applies up to version 3.2.5; for
later versions, use the TPN profile parameters as follows:
Use Command Line Parameters ? yes
Command Line Parameters -m Queue_Man_Name
v On SINIX, create an XTP entry in the SNA configuration file (the TRANSIT
KOGS file), for example:
XTP recvMP01,
UID = abcdefgh,
TYP = USER,
PATH = /home/abcdefgh/recvMP01.sh,
SECURE = NO
See the MQSeries for SINIX and DC/OSx System Management Guide for more
information about the TRANSIT KOGS file.
v On DC/OSx, add a Transaction Program entry to the SNA configuration file,
including the following information:
TRANSACTION PROGRAM
transaction programname (ebcdic): recvMP04
transaction program execute name:
'home/abcdefgh/recvMP04.sh
tp is enabled
tp supports basic conversations
tp supports mapped conversations
tp supports confirm synchronization
tp supports no synchronization
no verification is required
number of pip fields required: 0
privilege mask (hex): 0
(no privileges)
First it describes the parameters needed for an LU 6.2 connection, then it describes
“Establishing a TCP connection” on page 209 and “Establishing a UDP connection”
on page 209.
Once the connection is established, you need to define some channels to complete
the configuration. This is described in “MQSeries for AIX configuration” on
page 209.
Configuration worksheet
Use the following worksheet to record the values you will use for this
configuration. Where numbers appear in the Reference column they indicate that
the value must match that in the appropriate worksheet elsewhere in this book.
The examples that follow in this chapter refer back to the values in the ID column
of this table. The entries in the Parameter Name column are explained in
“Explanation of terms” on page 200.
Table 20. Configuration worksheet for Communications Server for AIX
ID Parameter Name Reference Example User Value
Parameters for local node
«1¬ Network name NETID
«2¬ Control Point name AIXPU
«3¬ Node ID 07123456
The values in this section of the table must match those used in Table 14 on page 138, as indicated.
«10¬ Network name «2¬ NETID
«11¬ Remote LU name «6¬ OS2LU
«12¬ Remote Transaction Program name «8¬ MQSERIES
«13¬ LU 6.2 CPI-C Side Information profile OS2CPIC
name
«14¬ Mode name «17¬ #INTER
«15¬ LAN destination address «10¬ 10005AFC5D83
«16¬ Token-Ring Link Station profile name OS2PRO
«17¬ CP name of adjacent node «3¬ OS2PU
«18¬ LU 6.2 partner location profile name OS2LOCPRO
Connection to a Windows NT system
The values in this section of the table must match those used in Table 16 on page 170, as indicated.
«10¬ Network name «2¬ NETID
«11¬ Remote LU name «5¬ WINNTLU
«12¬ Remote Transaction Program name «7¬ MQSERIES
«13¬ LU 6.2 CPI-C Side Information profile NTCPIC
name
«14¬ Mode name «17¬ #INTER
«15¬ LAN destination address «9¬ 08005AA5FAB9
«16¬ Token-Ring Link Station profile name NTPRO
«17¬ CP name of adjacent node «3¬ WINNTCP
«18¬ LU 6.2 partner LU profile name NTLUPRO
Connection to an HP-UX system
The values in this section of the table must match those used in Table 23 on page 219, as indicated.
«10¬ Network name «4¬ NETID
«11¬ Remote LU name «5¬ HPUXLU
«12¬ Remote Transaction Program name «7¬ MQSERIES
«13¬ LU 6.2 CPI-C Side Information profile HPUXCPIC
name
«14¬ Mode name «6¬ #INTER
«15¬ LAN destination address «8¬ 100090DC2C7C
«16¬ Token-Ring Link Station profile name HPUXPRO
«17¬ CP name of adjacent node «2¬ HPUXPU
«18¬ LU 6.2 partner LU profile name HPUXLUPRO
Connection to an AT&T GIS UNIX system
The values in this section of the table must match those used in Table 25 on page 243, as indicated.
The values in this section of the table must match those used in Table 27 on page 257, as indicated.
«10¬ Network name «2¬ NETID
«11¬ Remote LU name «7¬ SOLARLU
«12¬ Remote Transaction Program name «8¬ MQSERIES
«17¬ LU 6.2 CPI-C Side Information profile SOLCPIC
name
«14¬ Mode name «17¬ #INTER
«5¬ LAN destination address «5¬ 08002071CC8A
«16¬ Token-Ring Link Station profile name SOLPRO
«17¬ CP name of adjacent node «3¬ SOLARPU
«18¬ LU 6.2 partner LU profile name SOLLUPRO
Connection to an AS/400 system
The values in this section of the table must match those used in Table 42 on page 460, as indicated.
«10¬ Network name «1¬ NETID
«11¬ Remote LU name «3¬ AS400LU
«12¬ Remote Transaction Program name «8¬ MQSERIES
«13¬ LU 6.2 CPI-C Side Information profile AS4CPIC
name
«14¬ Mode name «17¬ #INTER
«15¬ LAN destination address «4¬ 10005A5962EF
«16¬ Token-Ring Link Station profile name AS4PRO
«17¬ CP name of adjacent node «2¬ AS400PU
«18¬ LU 6.2 partner LU profile name AS4LUPRO
Connection to an OS/390 or MVS/ESA system without CICS
The values in this section of the table must match those used in Table 36 on page 396, as indicated.
«10¬ Network name «2¬ NETID
«11¬ Remote LU name «3¬ MVSLU
«12¬ Remote Transaction Program name «7¬ MQSERIES
«13¬ LU 6.2 CPI-C Side Information profile MVSCPIC
name
«14¬ Mode name «10¬ #INTER
«15¬ LAN destination address «8¬ 400074511092
«16¬ Token-Ring Link Station profile name MVSPRO
«17¬ CP name of adjacent node «3¬ MVSPU
The values in this section of the table must match those used in Table 44 on page 485, as indicated.
«10¬ Network name «1¬ NETID
«11¬ Remote LU name «3¬ VSELU
«12¬ Remote Transaction Program name «4¬ MQ01
«13¬ LU 6.2 CPI-C Side Information profile VSECPIC
name
«14¬ Mode name #INTER
«15¬ LAN destination address «5¬ 400074511092
«16¬ Token-Ring Link Station profile name VSEPRO
«17¬ CP name of adjacent node «2¬ VSEPU
«18¬ LU 6.2 partner LU profile name VSELUPRO
Explanation of terms
«1¬Network name
This is the unique ID of the network to which you are connected. Your
network administrator will tell you this value.
«2¬ Control Point name
This is a unique control point name for this workstation. Your network
administrator will assign this to you.
«3¬ XID node ID
This is a unique identifier for this workstation. On other platforms it is
often referred to as the exchange ID (XID). Your network administrator will
assign this to you.
«4¬ Local LU name
A logical unit (LU) manages the exchange of data between systems. The
local LU name is the name of the LU on your system. Your network
administrator will assign this to you.
«5¬ Local LU alias
The local LU alias is the name by which your local LU is known to your
applications. You can choose this name yourself. It need be unique only on
this machine.
«6¬ TP Name
MQSeries applications trying to converse with this workstation will specify
a symbolic name for the program to be run at the receiving end. This will
have been defined on the channel definition at the sender. It is
recommended that when AIX is the receiver a Transaction Program Name
of MQSERIES is used, or in the case of a connection to VSE/ESA, where
the length is limited to 4 bytes, use MQTP.
See Table 19 on page 194 for more information.
«7¬ Full path to TP executable
This is the path and name of a shell script file that invokes the actual
program to be run when a conversation is initiated with this workstation.
You can choose the path and name of the script file. The contents of the
file are illustrated in “MQSeries for AIX TPN setup” on page 213.
where n is the number assigned to the token-ring adapter you are using.
The Network Address field of the Token-Ring section indicates the
adapter’s address.
«9¬ Mode name
This is the name of a configuration profile used by Communications Server
for AIX. The profile contains the set of parameters that control the APPC
conversation. The mode name specified in the profile will be assigned to
you by your network administrator. You supply the name to be used for
the profile.
«13¬ LU 6.2 CPI-C Side Information profile name
This is a name given to the Side Information profile defining a partner
node. You supply the name. It needs to be unique only on this machine.
You will later use the name in the MQSeries sender channel definition.
«16¬ Token-Ring Link Station profile name
This is the name of a configuration profile used by Communications Server
for AIX. You supply the name to be used for the profile. The link station
profile associates the link station with the SNA DLC profile, which has
been used to define the hardware adapter and link characteristics, and the
node control point.
«17¬ CP name of adjacent node
This is the unique control point name of the partner system which which
you are establishing communication. Your network administrator will
assign this to you.
«18¬ LU 6.2 partner LU profile name
This is the name of a configuration profile used by Communications Server
for AIX. You supply the name to be used for the profile. It needs to be
unique only on this machine. The profile defines parameters for
establishing a session with a specific partner LU. In some scenarios, this
profile may not be required but it is shown here to reduce the likelihood of
error. See the SNA Server for AIX Configuration Reference manual for details.
To update the SNA configuration profile, you need root authority. (Without root
authority you can display options and appear to modify them, but cannot actually
make any changes.) You can make configuration changes when SNA is either
active or inactive.
The configuration scenario that follows was accomplished using the graphical
interface.
If you are an experienced user of AIX, you may choose to circumvent the panels
and use the command-line interface. Refer to the SNA Server for AIX Configuration
Reference manual to see the commands that correspond to the panels illustrated.
Throughout the following example, only the panels for profiles that must be added
or updated are shown.
d. Enter a port name in the SNA port name box, for example, MQPORT.
e. Check Initially Active.
f. Click on OK.
c. Enter a name for your link station («4¬), for example, NETNODE.
d. Enter the port name to which you want to connect the link station. In this
case, the port name would be MQPORT.
e. Check Any in the LU traffic box.
f. Define where the remote node is by entering the control point on the
network node in the Independent LU traffic box. The control point consists
of a Network name («10¬) and a CP name of adjacent node («17¬).
Note: The network node does not have to be on the remote system that you
are connecting to.
g. Ensure the Remote node type is Network node.
h. In the Contact information, enter the MAC address («15¬) of the token ring
card on the network node.
Note: The network node does not have to be on the remote system that you
are connecting to.
Defining a local LU
To define a local LU:
1. From the main menu on the main window, click on Services, APPC, and New
independent local LU .... A window entitled Local LU appears:
where MQSERIES can be any name that matches the name used on the CPI-C
side information at the sender end of the channel.
b. Define the program your transaction program (MQSERIES) relates to, that is,
the receiving MQSeries channel:
snaadmin define_tp_load_info,
tp_name=MQSERIES, userid=mqm, group=mqm,
type=NON-QUEUED, style=COMPATIBLE,
path=/usr/lpp/mqm/bin/amqcrs6a,
arguments=-m AIX -n MQSERIES
where AIX and MQSERIES can be upper or lower case but must be the same
throughout.
This window lets you define the LU that you want to connect to and the
transaction program you want to start:
c. Enter a Name, («13¬). You must specify this name in the CONNAME
parameter of the channel.
d. Check Specify local LU alias and enter the LU alias value («5¬).
e. In the Partner LU and mode box, check Use PLU full name and enter the
name of the remote machine to which you are connecting. This consists of a
Network name («10¬) and a Remote LU name («11¬).
f. Enter the Mode («14¬).
What next?
The connection is now established. You are ready to complete the configuration.
Go to “MQSeries for AIX configuration”.
What next?
The connection is now established. You are ready to complete the configuration.
Go to “MQSeries for AIX configuration”.
Basic configuration
1. Create the queue manager from the AIX command line using the command:
crtmqm -u dlqname -q aix
where:
aix Is the name of the queue manager
-q Indicates that this is to become the default queue manager
-u dlqname
Specifies the name of the undeliverable message queue
where aix is the name given to the queue manager when it was created.
3. Start runmqsc from the AIX command line and use it to create the
undeliverable message queue by entering the command:
def ql (dlqname)
where dlqname is the name given to the undeliverable message queue when the
queue manager was created.
Channel configuration
The following section details the configuration to be performed on the AIX queue
manager to implement the channel described in Figure 32 on page 97.
In each case the MQSC command is shown. Either start runmqsc from an AIX
command line and enter each command in turn, or build the commands into a
command file.
Examples are given for connecting MQSeries for AIX and MQSeries for OS/2
Warp. If you wish to connect to another MQSeries product use the appropriate set
of values from the table in place of those for OS/2.
Note: The words in bold are user-specified and reflect the names of MQSeries
objects used throughout these examples. If you change the names used here,
ensure that you also change the other references made to these objects
throughout this book. All others are keywords and should be entered as
shown.
The values in this section of the table must match those used in Table 15 on page 164, as indicated.
«C¬ Remote queue manager name «A¬ OS2
«D¬ Remote queue name OS2.REMOTEQ
«E¬ Queue name at remote system «B¬ OS2.LOCALQ
«F¬ Transmission queue name OS2
«G¬ Sender (SNA) channel name AIX.OS2.SNA
«H¬ Sender (TCP/IP) channel name AIX.OS2.TCP
«I¬ Receiver (SNA) channel name «G¬ OS2.AIX.SNA
«J¬ Receiver (TCP/IP) channel name «H¬ OS2.AIX.TCP
Connection to MQSeries for Windows NT
The values in this section of the table must match those used in Table 17 on page 185, as indicated.
«C¬ Remote queue manager name «A¬ WINNT
«D¬ Remote queue name WINNT.REMOTEQ
«E¬ Queue name at remote system «B¬ WINNT.LOCALQ
«F¬ Transmission queue name WINNT
«G¬ Sender (SNA) channel name AIX.WINNT.SNA
«H¬ Sender (TCP/IP) channel name AIX.WINNT.TCP
«I¬ Receiver (SNA) channel name «G¬ WINNT.AIX.SNA
«J¬ Receiver (TCP) channel name «H¬ WINNT.AIX.TCP
| Connection to MQSeries for DIGITAL UNIX (Compaq Tru64 UNIX)
| The values in this section of the table must match those used in Table 22 on page 216, as indicated.
| «C¬ Remote queue manager name «A¬ DECUX
| «D¬ Remote queue name DECUX.REMOTEQ
| «E¬ Queue name at remote system «B¬ DECUX.LOCALQ
| «F¬ Transmission queue name DECUX
| «H¬ Sender (TCP) channel name DECUX.AIX.TCP
| «J¬ Receiver (TCP) channel name «H¬ AIX.DECUX.TCP
Connection to MQSeries for HP-UX
The values in this section of the table must match those used in Table 24 on page 239, as indicated.
«C¬ Remote queue manager name «A¬ HPUX
«D¬ Remote queue name HPUX.REMOTEQ
«E¬ Queue name at remote system «B¬ HPUX.LOCALQ
«F¬ Transmission queue name HPUX
«G¬ Sender (SNA) channel name AIX.HPUX.SNA
«H¬ Sender (TCP) channel name AIX.HPUX.TCP
«I¬ Receiver (SNA) channel name «G¬ HPUX.AIX.SNA
«J¬ Receiver (TCP) channel name «H¬ HPUX.AIX.TCP
Connection to MQSeries for AT&T GIS UNIX
The values in this section of the table must match those used in Table 26 on page 253, as indicated.
The values in this section of the table must match those used in Table 28 on page 272, as indicated.
«C¬ Remote queue manager name SOLARIS
«D¬ Remote queue name SOLARIS.REMOTEQ
«E¬ Queue name at remote system «B¬ SOLARIS.LOCALQ
«F¬ Transmission queue name SOLARIS
«G¬ Sender (SNA) channel name AIX.SOLARIS.SNA
«H¬ Sender (TCP/IP) channel name AIX.SOLARIS.TCP
«I¬ Receiver (SNA) channel name «G¬ SOLARIS.AIX.SNA
«J¬ Receiver (TCP/IP) channel name «H¬ SOLARIS.AIX.TCP
| Connection to MQSeries for AS/400
| The values in this section of the table must match those used in Table 43 on page 472, as indicated.
| «C¬ Remote queue manager name AS400
| «D¬ Remote queue name AS400.REMOTEQ
| «E¬ Queue name at remote system «B¬ AS400.LOCALQ
| «F¬ Transmission queue name AS400
| «G¬ Sender (SNA) channel name AIX.AS400.SNA
| «H¬ Sender (TCP) channel name AIX.AS400.TCP
| «I¬ Receiver (SNA) channel name «G¬ AS400.AIX.SNA
| «J¬ Receiver (TCP) channel name «H¬ AS400.AIX.TCP
Connection to MQSeries for OS/390 or MVS/ESA without CICS
The values in this section of the table must match those used in Table 37 on page 406, as indicated.
«C¬ Remote queue manager name MVS
«D¬ Remote queue name MVS.REMOTEQ
«E¬ Queue name at remote system «B¬ MVS.LOCALQ
«F¬ Transmission queue name MVS
«G¬ Sender (SNA) channel name AIX.MVS.SNA
«H¬ Sender (TCP) channel name AIX.MVS.TCP
«I¬ Receiver (SNA) channel name «G¬ MVS.AIX.SNA
«J¬ Receiver (TCP) channel name «H¬ MVS.AIX.TCP
Connection to MQSeries for VSE/ESA
The values in this section of the table must match those used in Table 45 on page 490, as indicated.
«C¬ Remote queue manager name VSE
«D¬ Remote queue name VSE.REMOTEQ
«E¬ Queue name at remote system «B¬ VSE.LOCALQ
«F¬ Transmission queue name VSE
where aix is the queue manager name («A¬). After creating this file, enable it for
execution by running the command:
chmod 755 /u/interops/AIX.crs6a
As an alternative to creating an executable file, you can specify the path on the
Add LU 6.2 TPN Profile panel, using command line parameters.
Specifying a path in one of these two ways ensures that SNA receiver channels
activate correctly when a sender channel initiates a conversation.
| Note: MQSeries for DIGITAL UNIX (Compaq Tru64 UNIX), V2.2.1 supports the
| TCP communication protocol only.
| Once the connection is established, you need to define some channels to complete
| the configuration. This process is described in “MQSeries for DIGITAL UNIX
| (Compaq Tru64 UNIX) configuration”.
| What next?
| Inetd is now ready to listen for incoming requests and pass them to MQSeries. You
| are ready to complete the configuration as described in the next section.
|
| MQSeries for DIGITAL UNIX (Compaq Tru64 UNIX) configuration
| Before beginning the installation process ensure that you have first created the
| mqm user and group, and set the password.
| Basic configuration
| 1. Create the queue manager from the UNIX prompt using the command:
| crtmqm -u dlqname -q qmname
| where:
| qmname Is the name of the queue manager
| -q Indicates that this is to become the default queue manager
| -u dlqname
| Specifies the name of the undeliverable message queue
| This command creates a queue manager and sets the DEADQ attribute of the
| queue manager, but does not create the undeliverable message queue.
| 2. Start the queue manager from the UNIX prompt using the command:
| strmqm qmname
| where qmname is the name given to the queue manager when it was created.
| Channel configuration
| This section describes the configuration to be performed on the Digital UNIX
| queue manager to implement the single channel, and the MQSeries objects
| associated with it.
| Examples are given at the end of this chapter for connecting MQSeries for
| DIGITAL UNIX (Compaq Tru64 UNIX) and MQSeries for OS/2 Warp. If you wish
| to connect to another MQSeries product use the appropriate set of values from the
| table in place of those for OS/2.
| In each example, the MQSC command is shown. Either start runmqsc from a
| UNIX prompt and enter each command in turn, or build the commands into a
| command file.
| Note: The words in bold are user-specified and reflect the names of MQSeries
| objects used throughout these examples. All others are keywords and should
| be entered as shown.
| Table 22. Configuration worksheet for MQSeries for DIGITAL UNIX (Compaq Tru64 UNIX)
| ID Parameter Name Reference Example Used User Value
| Definition for local node
| «A¬ Queue Manager Name DECUX
| «B¬ Local queue name DECUX.LOCALQ
| Connection to MQSeries for OS/2 Warp
| The values in this section of the table must match those used in Table 15 on page 164.
| «C¬ Remote queue manager name «A¬ OS2
| «D¬ Remote queue name OS2.REMOTEQ
| «E¬ Queue name at remote system «B¬ OS2.LOCALQ
| «F¬ Transmission queue name OS2
| The values in this section of the table must match those used in Table 17 on page 185.
| «C¬ Remote queue manager name «A¬ WINNT
| «D¬ Remote queue name WINNT.REMOTEQ
| «E¬ Queue name at remote system «B¬ WINNT.LOCALQ
| «F¬ Transmission queue name WINNT
| «H¬ Sender (TCP) channel name DECUX.WINNT.TCP
| «J¬ Receiver (TCP) channel name «H¬ WINNT.DECUX.TCP
| Connection to MQSeries for AIX
| The values in this section of the table must match those used in Table 21 on page 211.
| «C¬ Remote queue manager name «A¬ AIX
| «D¬ Remote queue name AIX.REMOTEQ
| «E¬ Queue name at remote system «B¬ AIX.LOCALQ
| «F¬ Transmission queue name AIX
| «H¬ Sender (TCP) channel name DECUX.AIX.TCP
| «J¬ Receiver (TCP) channel name «H¬ AIX.DECUX.TCP
| Connection to MQSeries for AT&T GIS UNIX
| The values in this section of the table must match those used in Table 26 on page 253.
| «C¬ Remote queue manager name «A¬ GIS
| «D¬ Remote queue name GIS.REMOTEQ
| «E¬ Queue name at remote system «B¬ GIS.LOCALQ
| «F¬ Transmission queue name GIS
| «H¬ Sender (TCP) channel name DECUX.GIS.TCP
| «J¬ Receiver (TCP) channel name «H¬ GIS.DECUX.TCP
| Connection to MQSeries for Sun Solaris
| The values in this section of the table must match those used in Table 28 on page 272.
| «C¬ Remote queue manager name «A¬ SOLARIS
| «D¬ Remote queue name SOLARIS.REMOTEQ
| «E¬ Queue name at remote system «B¬ SOLARIS.LOCALQ
| «F¬ Transmission queue name SOLARIS
| «H¬ Sender (TCP) channel name DECUX.SOLARIS.TCP
| «J¬ Receiver (TCP) channel name «H¬ SOLARIS.DECUX.TCP
| Connection to MQSeries for AS/400.
| The values in this section of the table must match those used in Table 43 on page 472.
| «C¬ Remote queue manager name «A¬ AS400
| «D¬ Remote queue name AS400.REMOTEQ
| «E¬ Queue name at remote system «B¬ AS400.LOCALQ
| «F¬ Transmission queue name AS400
| «H¬ Sender (TCP) channel name DECUX.AS400.TCP
| «J¬ Receiver (TCP) channel name «H¬ AS400.DECUX.TCP
Chapter 15. Example configuration - IBM MQSeries for DIGITAL UNIX (Compaq Tru64 UNIX) 217
Digital UNIX configuration
| Table 22. Configuration worksheet for MQSeries for DIGITAL UNIX (Compaq Tru64 UNIX) (continued)
| ID Parameter Name Reference Example Used User Value
| Connection to MQSeries for OS/390 without CICS
| The values in this section of the table must match those used in Table 37 on page 406.
| «C¬ Remote queue manager name «A¬ MVS
| «D¬ Remote queue name MVS.REMOTEQ
| «E¬ Queue name at remote system «B¬ MVS.LOCALQ
| «F¬ Transmission queue name MVS
| «H¬ Sender (TCP) channel name DECUX.MVS.TCP
| «J¬ Receiver (TCP) channel name «H¬ MVS.DECUX.TCP
| Connection to MQSeries for VSE/ESA
| The values in this section of the table must match those used in Table 45 on page 490.
| «C¬ Remote queue manager name «A¬ VSE
| «D¬ Remote queue name VSE.REMOTEQ
| «E¬ Queue name at remote system «B¬ VSE.LOCALQ
| «F¬ Transmission queue name VSE
| «G¬ Sender (SNA) channel name DECUX.VSE.SNA
| «I¬ Receiver (SNA) channel name «G¬ VSE.DECUX.SNA
|
First it describes the parameters needed for an LU 6.2 connection, then it describes
“Establishing a session using HP SNAplus2” on page 223 and “Establishing a TCP
connection” on page 237.
Once the connection is established, you need to define some channels to complete
the configuration. This is described in “MQSeries for HP-UX configuration” on
page 238.
Configuration worksheet
Use this worksheet to record the values you use for your configuration. Where
numbers appear in the Reference column they indicate that the value must match
that in the appropriate worksheet elsewhere in this book. The examples that follow
in this chapter refer back to the values in the ID column. The entries in the
Parameter Name column are explained in “Explanation of terms” on page 222.
Table 23. Configuration worksheet for HP SNAplus2
ID Parameter Name Reference Example User Value
Parameters for local node
«1¬ Configuration file name sna_node.cfg
«2¬ Control point name HPUXPU
«3¬ Node ID to send 05D 54321
«4¬ Network name NETID
The values in this section of the table must match those used in Table 14 on page 138, as indicated.
«12¬ Link station name OS2CONN
«13¬ Network name «2¬ NETID
«14¬ CP name «3¬ OS2PU
«15¬ Remote LU «6¬ OS2LU
«16¬ Application TP «8¬ MQSERIES
«17¬ Mode name «17¬ #INTER
«18¬ CPI-C symbolic destination name OS2CPIC
«19¬ Remote network address «10¬ 10005AFC5D83
«20¬ Node ID to receive «4¬ 05D 12345
Connection to a Windows NT system
The values in this section of the table must match those used in Table 16 on page 170, as indicated.
«12¬ Link station name NTCONN
«13¬ Network name «2¬ NETID
«14¬ CP name «3¬ WINNTCP
«15¬ Remote LU «5¬ WINNTLU
«16¬ Application TP «7¬ MQSERIES
«17¬ Mode name «17¬ #INTER
«18¬ CPI-C symbolic destination name NTCPIC
«19¬ Remote network address «9¬ 08005AA5FAB9
«20¬ Node ID to receive «4¬ 05D 30F65
Connection to an AIX system
The values in this section of the table must match those used in Table 20 on page 197, as indicated.
«12¬ Link station name AIXCONN
«13¬ Network name «1¬ NETID
«14¬ CP name «2¬ AIXPU
«15¬ Remote LU «4¬ AIXLU
«16¬ Application TP «6¬ MQSERIES
«17¬ Mode name «14¬ #INTER
«18¬ CPI-C symbolic destination name AIXCPIC
«19¬ Remote network address «8¬ 123456789012
«20¬ Node ID to receive «3¬ 071 23456
Connection to an AT&T GIS UNIX system
The values in this section of the table must match those used in the table Table 25 on page 243, as indicated.
«12¬ Link station name GISCONN
«13¬ Network name «2¬ NETID
The values in this section of the table must match those used in Table 27 on page 257, as indicated.
«12¬ Link station name SOLCONN
«13¬ Network name «2¬ NETID
«14¬ CP name «3¬ SOLARPU
«15¬ Remote LU «7¬ SOLARLU
«16¬ Application TP «8¬ MQSERIES
«17¬ Mode name «17¬ #INTER
«18¬ CPI-C symbolic destination name SOLCPIC
«19¬ Remote network address «5¬ 08002071CC8A
«20¬ node ID to receive «6¬ 05D 310D6
Connection to an AS/400 system
The values in this section of the table must match those used in Table 42 on page 460, as indicated.
«12¬ Link station name AS4CONN
«13¬ Network name «1¬ NETID
«14¬ CP name «2¬ AS400PU
«15¬ Remote LU «3¬ AS400LU
«16¬ Application TP «8¬ MQSERIES
«17¬ Mode name «17¬ #INTER
«18¬ CPI-C symbolic destination name AS4CPIC
«19¬ Remote network address «4¬ 10005A5962EF
Connection to an OS/390 or MVS/ESA system without CICS
The values in this section of the table must match those used in Table 36 on page 396, as indicated.
«12¬ Link station name MVSCONN
«13¬ Network name «2¬ NETID
«14¬ CP name «3¬ MVSPU
«15¬ Remote LU «4¬ MVSLU
«16¬ Application TP «7¬ MQSERIES
«17¬ Mode name «10¬ #INTER
«18¬ CPI-C symbolic destination name MVSCPIC
«19¬ Remote network address «8¬ 400074511092
Connection to a VSE/ESA system
The values in this section of the table must match those used in Table 44 on page 485, as indicated.
«12¬ Link station name VSECONN
«13¬ Network name «1¬ NETID
«14¬ CP name «2¬ VSEPU
«15¬ Remote LU «3¬ VSELU
Explanation of terms
«1¬ Configuration file name
This is the unique name of the SNAplus2 configuration file. The default for
this name is sna_node.cfg.
Although it is possible to edit this file it is strongly recommended that
configuration is done using xsnapadmin.
«2¬ Control point name
This is the unique Control point name for this workstation. In the SNA
network, the Control point is an addressable location (PU type 2.1). Your
network administrator will assign this to you.
«3¬ Node ID to send
This is the unique ID of this workstation. On other platforms this is often
referred to as the Exchange ID or XID. Your network administrator will
assign this ID for you.
«4¬ Network name
This is the unique ID of the network to which you are connected. It is an
alphanumeric value and can be 1-8 characters long. The network name
works with the Control point name to uniquely identify a system. Your
network administrator will tell you the value.
«5¬ Local APPC LU
An LU manages the exchange of data between transactions. The local
APPC LU name is the name of the LU on your system. Your network
administrator will assign this to you.
«6¬ APPC mode
This is the name given to the set of parameters that control the APPC
conversation. This name must be defined at each partner system. Your
network administrator will assign this to you.
«7¬ Invokable TP
MQSeries applications trying to converse with this workstation will specify
a symbolic name for the program to be run at the receiving end. This will
have been defined on the channel definition at the sender. For simplicity,
wherever possible use a transaction program name of MQSERIES, or in the
case of a connection to VSE/ESA, where the length is limited to 4 bytes,
use MQTP.
See Table 19 on page 194 for more information.
«8¬ Token-ring adapter address
Use the HP-UX System Administration Manager (SAM) to discover the
adapter address for this workstation. You need root authority to use SAM.
From the initial menu, select Networking and Communications, then
select Network Interface cards followed by LAN 0 (or whichever LAN
you are using). The adapter address is displayed under the heading Station
SNAplus2 configuration
SNAplus2 configuration involves the following steps:
1. Defining a local node
2. Adding a Token Ring Port
3. Defining a local LU
3. Complete the Control point name with the values Network name («4¬) and
Control point name («2¬).
4. Enter the Control point name («2¬) in the Control point alias field.
5. Enter the Node ID («3¬).
6. Select End node.
7. Press OK.
A default independent local LU is defined.
3. Select a Token Ring Card port and press OK. The following panel is displayed:
Defining a local LU
1. From the main SNAplus2 menu, select the Independent local LUs panel.
2. Press Add. The following panel is displayed:
APPC configuration
APPC configuration involves the following steps:
1. Defining a remote node
2. Defining a partner LU
3. Defining a link station
4. Defining a mode
5. Adding CPI-C information
6. Adding a TP definition
3. Select Define remote node and press OK. The following panel is displayed:
Defining a partner LU
1. From the main SNAplus2 menu, select the remote node in the Remote systems
panel.
2. Press Add. The following panel is displayed:
Defining a mode
1. From the SNAplus2 main menu, select the Services pull-down: The following
panel is displayed:
5. Enter the Name («18¬). Select Application TP and enter the value («16¬). Select
Use PLU alias and enter the name («15¬). Enter the Mode name («17¬).
6. Press OK.
See “MQSeries for HP-UX invokable TP setup” on page 241 for more information
about TP definitions.
Logging and tracing are controlled from here. Log and trace files can be found in
the /var/opt/sna directory. The logging files sna.aud and sna.err can be read
using a standard editor such as vi.
In order to read the trace files sna1.trc and sna2.trc they must first be formatted by
running the command snaptrcfmt -f sna1.trc -o sna1 which produces a sna1.dmp
file which can be read using a normal editor.
The configuration file itself is editable but this is not a recommended method of
configuring SNAplus2.
The APPCLU environment variables must be set before starting a sender channel
from the HP-UX system. The command can be either entered interactively or
added to the logon profile. Depending on the level of BOURNE shell or KORN
shell program being used, the command will be:
export APPCLLU=HPUXLU «5¬ newer level
or
APPCLLU=HPUXLU «5¬ older level
export
What next?
The connection is now established. You are ready to complete the configuration.
Go to “MQSeries for HP-UX configuration” on page 238.
What next?
The connection is now established. You are ready to complete the configuration.
Go to “MQSeries for HP-UX configuration” on page 238.
Basic configuration
1. Create the queue manager from the UNIX prompt using the command:
crtmqm -u dlqname -q hpux
where:
hpux Is the name of the queue manager
-q Indicates that this is to become the default queue manager
-u dlqname
Specifies the name of the undeliverable message queue
This command creates a queue manager and a set of default objects. It sets the
DEADQ attribute of the queue manager but does not create the undeliverable
message queue.
2. Start the queue manager from the UNIX prompt using the command:
strmqm hpux
where hpux is the name given to the queue manager when it was created.
Channel configuration
The following section details the configuration to be performed on the HP-UX
queue manager to implement the channel described in Figure 32 on page 97.
In each case the MQSC command is shown. Either start runmqsc from a UNIX
prompt and enter each command in turn, or build the commands into a command
file.
Examples are given for connecting MQSeries for HP-UX and MQSeries for OS/2
Warp. If you wish connect to another MQSeries product use the appropriate set of
values from the table in place of those for OS/2.
Note: The words in bold are user-specified and reflect the names of MQSeries
objects used throughout these examples. If you change the names used here,
ensure that you also change the other references made to these objects
throughout this book. All others are keywords and should be entered as
shown.
The values in this section of the table must match those used in Table 15 on page 164, as indicated.
«C¬ Remote queue manager name «A¬ OS2
«D¬ Remote queue name OS2.REMOTEQ
«E¬ Queue name at remote system «B¬ OS2.LOCALQ
«F¬ Transmission queue name OS2
«G¬ Sender (SNA) channel name HPUX.OS2.SNA
«H¬ Sender (TCP/IP) channel name HPUX.OS2.TCP
«I¬ Receiver (SNA) channel name «G¬ OS2.HPUX.SNA
«J¬ Receiver (TCP/IP) channel name «H¬ OS2.HPUX.TCP
Connection to MQSeries for Windows NT
The values in this section of the table must match those used in Table 17 on page 185, as indicated.
«C¬ Remote queue manager name «A¬ WINNT
«D¬ Remote queue name WINNT.REMOTEQ
«E¬ Queue name at remote system «B¬ WINNT.LOCALQ
«F¬ Transmission queue name WINNT
«G¬ Sender (SNA) channel name HPUX.WINNT.SNA
«H¬ Sender (TCP/IP) channel name HPUX.WINNT.TCP
«I¬ Receiver (SNA) channel name «G¬ WINNT.HPUX.SNA
«J¬ Receiver (TCP) channel name «H¬ WINNT.HPUX.TCP
Connection to MQSeries for AIX
The values in this section of the table must match those used in Table 21 on page 211, as indicated.
«C¬ Remote queue manager name «A¬ AIX
«D¬ Remote queue name AIX.REMOTEQ
«E¬ Queue name at remote system «B¬ AIX.LOCALQ
«F¬ Transmission queue name AIX
«G¬ Sender (SNA) channel name HPUX.AIX.SNA
«H¬ Sender (TCP) channel name HPUX.AIX.TCP
«I¬ Receiver (SNA) channel name «G¬ AIX.HPUX.SNA
«J¬ Receiver (TCP) channel name «H¬ AIX.HPUX.TCP
| Connection to MQSeries for DIGITAL UNIX (Compaq Tru64 UNIX)
| The values in this section of the table must match those used in Table 22 on page 216, as indicated.
| «C¬ Remote queue manager name «A¬ DECUX
| «D¬ Remote queue name DECUX.REMOTEQ
| «E¬ Queue name at remote system «B¬ DECUX.LOCALQ
| «F¬ Transmission queue name DECUX
| «H¬ Sender (TCP) channel name DECUX.HPUX.TCP
| «J¬ Receiver (TCP) channel name «H¬ HPUX.DECUX.TCP
Connection to MQSeries for OS/390 or MVS/ESA without CICS
The values in this section of the table must match those used in Table 26 on page 253, as indicated.
The values in this section of the table must match those used in Table 28 on page 272, as indicated.
«C¬ Remote queue manager name SOLARIS
«D¬ Remote queue name SOLARIS.REMOTEQ
«E¬ Queue name at remote system «B¬ SOLARIS.LOCALQ
«F¬ Transmission queue name SOLARIS
«G¬ Sender (SNA) channel name HPUX.SOLARIS.SNA
«H¬ Sender (TCP/IP) channel name HPUX.SOLARIS.TCP
«I¬ Receiver (SNA) channel name «G¬ SOLARIS.HPUX.SNA
«J¬ Receiver (TCP/IP) channel name «H¬ SOLARIS.HPUX.TCP
| Connection to MQSeries for AS/400
| The values in this section of the table must match those used in Table 43 on page 472, as indicated.
| «C¬ Remote queue manager name AS400
| «D¬ Remote queue name AS400.REMOTEQ
| «E¬ Queue name at remote system «B¬ AS400.LOCALQ
| «F¬ Transmission queue name AS400
| «G¬ Sender (SNA) channel name HPUX.AS400.SNA
| «H¬ Sender (TCP/IP) channel name HPUX.AS400.TCP
| «I¬ Receiver (SNA) channel name «G¬ AS400.HPUX.SNA
| «J¬ Receiver (TCP) channel name «H¬ AS400.HPUX.TCP
Connection to MQSeries for OS/390 or MVS/ESA without CICS
The values in this section of the table must match those used in Table 37 on page 406, as indicated.
«C¬ Remote queue manager name MVS
«D¬ Remote queue name MVS.REMOTEQ
«E¬ Queue name at remote system «B¬ MVS.LOCALQ
«F¬ Transmission queue name MVS
«G¬ Sender (SNA) channel name HPUX.MVS.SNA
«H¬ Sender (TCP) channel name HPUX.MVS.TCP
«I¬ Receiver (SNA) channel name «G¬ MVS.HPUX.SNA
«J¬ Receiver (TCP) channel name «H¬ MVS.HPUX.TCP
Connection to MQSeries for VSE/ESA
The values in this section of the table must match those used in Table 45 on page 490, as indicated.
«C¬ Remote queue manager name VSE
«D¬ Remote queue name VSE.REMOTEQ
«E¬ Queue name at remote system «B¬ VSE.LOCALQ
«F¬ Transmission queue name VSE
This ensures that SNA receiver channels activate correctly when a sender channel
initiates a conversation.
First it describes the parameters needed for an LU 6.2 connection, then it describes
“Establishing a connection using AT&T GIS SNA Server” on page 246 and
“Establishing a TCP connection” on page 251.
Once the connection is established, you need to define some channels to complete
the configuration. This is described in “Channel configuration” on page 252.
Configuration worksheet
Use the following worksheet to record the values you will use for this
configuration. Where numbers appear in the Reference column they indicate that
the value must match that in the appropriate worksheet elsewhere in this book.
The examples that follow in this chapter refer back to the values in the ID column
of this table. The entries in the Parameter Name column are explained in
“Explanation of terms” on page 246.
Table 25. Configuration worksheet for AT&T GIS SNA Services
ID Parameter Name Reference Example User Value
Parameters for local node
«1¬ Configuration 010
«2¬ Network name NETID
The values in this section of the table must match those used in Table 14 on page 138, as indicated.
«10¬ Remote Node name «3¬ OS2PU
«11¬ Network name «2¬ NETID
«12¬ Remote LU name «6¬ OS2LU
«13¬ Remote Transaction Program name «8¬ MQSERIES
«14¬ LU 6.2 CPI-C side information symbolic OS2CPIC
destination
«15¬ Mode name «17¬ #INTER
«16¬ LAN destination address «10¬ 10005AFC5D83
Connection to a Windows NT system
The values in this section of the table must match those used in Table 16 on page 170, as indicated.
«10¬ Remote Node name «3¬ WINNTCP
«11¬ Network name «2¬ NETID
«12¬ Remote LU name «5¬ WINNTLU
«13¬ Remote Transaction Program name «7¬ MQSERIES
«14¬ LU 6.2 CPI-C side information symbolic NTCPIC
destination
«15¬ Mode name «17¬ #INTER
«16¬ LAN destination address «9¬ 08005AA5FAB9
Connection to an AIX system
The values in this section of the table must match those used in Table 20 on page 197, as indicated.
«10¬ Remote Node name «2¬ AIXPU
«11¬ Network name «1¬ NETID
«12¬ Remote LU name «4¬ AIXLU
«13¬ Remote Transaction Program name «6¬ MQSERIES
«14¬ LU 6.2 CPI-C side information symbolic AIXCPIC
destination
«15¬ Mode name «14¬ #INTER
«16¬ LAN destination address «8¬ 123456789012
Connection to an HP-UX system
The values in this section of the table must match those used in Table 23 on page 219, as indicated.
«10¬ Remote Node name «2¬ HPUXPU
«11¬ Network name «4¬ NETID
«12¬ Remote LU name «5¬ HPUXLU
«13¬ Remote Transaction Program name «7¬ MQSERIES
«14¬ LU 6.2 CPI-C side information symbolic HPUXCPIC
destination
The values in this section of the table must match those used in Table 27 on page 257, as indicated.
«10¬ Remote Node name «3¬ SOLARPU
«11¬ Network name «2¬ NETID
«12¬ Remote LU name «7¬ SOLARLU
«13¬ Remote Transaction Program name «8¬ MQSERIES
«14¬ LU 6.2 CPI-C side information symbolic SOLCPIC
destination
«15¬ Mode name «17¬ #INTER
«16¬ LAN destination address «5¬ 08002071CC8A
Connection to an AS/400 system
The values in this section of the table must match those used in Table 42 on page 460, as indicated.
«10¬ Remote Node name «2¬ AS400PU
«11¬ Network name «1¬ NETID
«12¬ Remote LU name «3¬ AS400LU
«13¬ Remote Transaction Program name «8¬ MQSERIES
«14¬ LU 6.2 CPI-C side information symbolic AS4CPIC
destination
«15¬ Mode name «17¬ #INTER
«16¬ LAN destination address «4¬ 10005A5962EF
Connection to an OS/390 or MVS/ESA system without CICS
The values in this section of the table must match those used in Table 36 on page 396, as indicated.
«10¬ Remote Node name «3¬ MVSPU
«11¬ Network name «2¬ NETID
«12¬ Remote LU name «4¬ MVSLU
«13¬ Remote Transaction Program name «7¬ MQSERIES
«14¬ LU 6.2 CPI-C side information symbolic MVSCPIC
destination
«15¬ Mode name «10¬ #INTER
«16¬ LAN destination address «8¬ 400074511092
Connection to a VSE/ESA system
The values in this section of the table must match those used in Table 44 on page 485, as indicated.
«10¬ Remote Node name «2¬ VSEPU
«11¬ Network name «1¬ NETID
«12¬ Remote LU name «3¬ VSELU
«13¬ Remote Transaction Program name «4¬ MQ01
«14¬ LU 6.2 CPI-C side information symbolic VSECPIC
destination
«15¬ Mode name #INTER
«16¬ LAN destination address «5¬ 400074511092
Chapter 17. Example configuration - IBM MQSeries for AT&T GIS UNIX Version 2.2 245
AT&T GIS UNIX and LU 6.2
Explanation of terms
«1¬ Configuration
This is the unique ID of the SNA Server configuration you are creating or
modifying. Valid values are between 0 and 255.
«2¬ Network name
This is the unique ID of the network to which you are connected. Your
network administrator will tell you this value.
«3¬ Control Point name
This is a unique Control Point name for this workstation. Your network
administrator will assign this to you.
«4¬ Local LU name
A logical unit (LU) manages the exchange of data between systems. The
local LU name is the name of the LU on your system. Your network
administrator will assign this to you.
«5¬ LU 6.2 Transaction Program name
MQSeries applications trying to converse with this workstation will specify
a symbolic name for the program to be run at the receiving end. This will
have been defined on the channel definition at the sender. Wherever
possible we use a transaction program name of MQSERIES, or in the case
of a connection to VSE/ESA, where the length is limited to 4 bytes, use
MQTP.
See Table 19 on page 194 for more information.
«6¬ Local PU name
This is a unique PU name for this workstation. Your network administrator
will assign this to you.
«7¬ Mode name
This is the name given to the set of parameters that control the APPC
conversation. This name must be defined at each partner system. Your
network administrator will assign this to you.
«8¬ Token-ring adapter address
The is the 12-character hex address of the token-ring card.
«10¬ Remote Node name
This is a meaningful symbolic name by which the connection to a partner
node is known. It is used only inside SNA Server setup and is specified by
you.
«14¬ LU 6.2 CPI-C Side Information Symbolic Destination
This is a name given to the definition of a partner node. You supply the
name. It need be unique only on this machine. You will later use the name
in the MQSeries sender channel definition.
Use snamgr to enter the AT&T GIS SNA Server configuration panels. You need
root authority to use snamgr.
Note: SNA Server works better in an Xterm session than it does in an ASCII
session such as TELNET.
5 Create a Configuration
Enter Y.
Node Parameters:
Enter the values for Node ID of Local Node, PU Resource Name («6¬), Network
Identifier («2¬), CP Name («3¬), LU 6.2 Logical Unit Name («4¬), and Max
Number of LU 6.2 Sessions.
Chapter 17. Example configuration - IBM MQSeries for AT&T GIS UNIX Version 2.2 247
Using AT&T GIS SNA Server
Defining a mode
Proceed through these panels:
2 Local Configuration
Enter the values for Mode Name («7¬), Maximum Number of Sessions, and
Number of Locally Controlled Sessions.
TP name MQSERIES_______________________
Enter the values for TP name («5¬), and set the TP start type to A.
Note: Before this will work you need to associate the TP name with an executable
program. You do this outside snamgr by creating a symbolic link entry in
the directory /usr/lbin either before or after you configure SNA Server.
Enter the following commands:
cd /usr/lbin
ln -s /opt/mqm/bin/amqcrs6a MQSeries «5¬
Enter the values for Remote Node Name («10¬), Type of Link Connection, and
SNA Logical Connection ID.
Remote DLSAP 04
Broadcast Timer 1_
Enter the values for Token Ring Adapter ID, Local XID («9¬), and Remote MAC
address («16¬).
Local DLSAP 04
Chapter 17. Example configuration - IBM MQSeries for AT&T GIS UNIX Version 2.2 249
Using AT&T GIS SNA Server
Defining a partner LU
Proceed through these panels:
Session Capability P
Enter the values for Locally Known Name («12¬), Network Identifier («11¬),
Network Name (LUNAME) («12¬), and Uninterpreted Name («12¬),
3 Automatic Activation
TP name MQSERIES
Enter the values for Partner LU name («12¬), Mode name («15¬), and TP name
(«13¬).
What next?
The LU 6.2 connection is now established. You are ready to complete the
configuration. Go to “MQSeries for AT&T GIS UNIX configuration”.
The command kill -1 can be unreliable. If it doesn’t work, use the command
kill -9 and then restart /usr/etc/inetd manually.
What next?
The LU 6.2 connection is now established. You are ready to complete the
configuration. Go to “MQSeries for AT&T GIS UNIX configuration”.
Chapter 17. Example configuration - IBM MQSeries for AT&T GIS UNIX Version 2.2 251
AT&T GIS UNIX configuration
Notes:
1. Sample programs are installed in /opt/mqm/samp.
2. Error logs are stored in /var/mqm/qmgrs/qmgrname/errors.
3. When you are using the command interpreter runmqsc to enter administration
commands, a + at the end of a line indicates that the next line is a continuation.
Ensure that there is a space between the last parameter and the continuation
character.
Basic configuration
1. Create the queue manager from the UNIX prompt using the command:
crtmqm -u dlqname -q gis
where:
gis Is the name of the queue manager
-q Indicates that this is to become the default queue manager
-u dlqname
Specifies the name of the undeliverable message queue
2. Start the queue manager from the UNIX prompt using the command:
strmqm gis
where gis is the name given to the queue manager when it was created.
3. Before creating your own objects you must first create the system default
objects. These are a number of definitions for required objects and templates on
which user definitions will be modelled.
Create the default objects from the UNIX prompt using the command:
runmqsc gis < /opt/mqm/samp/amqscoma.tst > defobj.out
where gis is the name of the queue manager. Display the file defobj.out and
ensure that all objects were created successfully. There is a report at the end of
the file.
Channel configuration
The following section details the configuration to be performed on the AT&T GIS
UNIX queue manager to implement the channel described in Figure 32 on page 97.
In each case the MQSC command is shown. Either start runmqsc from a UNIX
prompt and enter each command in turn, or build a command file of the same
format as amqscoma.tst and use it as before to create the objects.
Examples are given for connecting MQSeries for AT&T GIS UNIX and MQSeries
for OS/2 Warp. If you wish to connect to another MQSeries product use the
appropriate set of values from the table in place of those for OS/2.
Note: The words in bold are user-specified and reflect the names of MQSeries
objects used throughout these examples. If you change the names used here,
ensure that you also change the other references made to these objects
throughout this book. All others are keywords and should be entered as
shown.
The values in this section of the table must match those used in Table 15 on page 164, as indicated.
«C¬ Remote queue manager name «A¬ OS2
«D¬ Remote queue name OS2.REMOTEQ
«E¬ Queue name at remote system «B¬ OS2.LOCALQ
«F¬ Transmission queue name OS2
«G¬ Sender (SNA) channel name GIS.OS2.SNA
«H¬ Sender (TCP/IP) channel name GIS.OS2.TCP
«I¬ Receiver (SNA) channel name «G¬ OS2.GIS.SNA
«J¬ Receiver (TCP/IP) channel name «H¬ OS2.GIS.TCP
Connection to MQSeries for Windows NT
The values in this section of the table must match those used in Table 17 on page 185, as indicated.
«C¬ Remote queue manager name «A¬ WINNT
«D¬ Remote queue name WINNT.REMOTEQ
«E¬ Queue name at remote system «B¬ WINNT.LOCALQ
«F¬ Transmission queue name WINNT
«G¬ Sender (SNA) channel name GIS.WINNT.SNA
«H¬ Sender (TCP/IP) channel name GIS.WINNT.TCP
«I¬ Receiver (SNA) channel name «G¬ WINNT.GIS.SNA
«J¬ Receiver (TCP) channel name «H¬ WINNT.GIS.TCP
Connection to MQSeries for AIX
The values in this section of the table must match those used in Table 21 on page 211, as indicated.
«C¬ Remote queue manager name «A¬ AIX
«D¬ Remote queue name AIX.REMOTEQ
«E¬ Queue name at remote system «B¬ AIX.LOCALQ
«F¬ Transmission queue name AIX
«G¬ Sender (SNA) channel name GIS.AIX.SNA
«H¬ Sender (TCP) channel name GIS.AIX.TCP
«I¬ Receiver (SNA) channel name «G¬ AIX.GIS.SNA
«J¬ Receiver (TCP) channel name «H¬ AIX.GIS.TCP
| Connection to MQSeries for DIGITAL UNIX (Compaq Tru64 UNIX)
| The values in this section of the table must match those used in Table 22 on page 216, as indicated.
| «C¬ Remote queue manager name «A¬ DECUX
| «D¬ Remote queue name DECUX.REMOTEQ
| «E¬ Queue name at remote system «B¬ DECUX.LOCALQ
| «F¬ Transmission queue name DECUX
| «H¬ Sender (TCP) channel name DECUX.GIS.TCP
| «J¬ Receiver (TCP) channel name «H¬ GIS.DECUX.TCP
Connection to MQSeries for HP-UX
The values in this section of the table must match those used in Table 24 on page 239, as indicated.
Chapter 17. Example configuration - IBM MQSeries for AT&T GIS UNIX Version 2.2 253
AT&T GIS UNIX configuration
Table 26. Configuration worksheet for MQSeries for AT&T GIS UNIX (continued)
ID Parameter Name Reference Example Used User Value
«C¬ Remote queue manager name «A¬ HPUX
«D¬ Remote queue name HPUX.REMOTEQ
«E¬ Queue name at remote system «B¬ HPUX.LOCALQ
«F¬ Transmission queue name HPUX
«G¬ Sender (SNA) channel name GIS.HPUX.SNA
«H¬ Sender (TCP) channel name GIS.HPUX.TCP
«I¬ Receiver (SNA) channel name «G¬ HPUX.GIS.SNA
«J¬ Receiver (TCP) channel name «H¬ HPUX.GIS.TCP
Connection to MQSeries for Sun Solaris
The values in this section of the table must match those used in Table 28 on page 272, as indicated.
«C¬ Remote queue manager name SOLARIS
«D¬ Remote queue name SOLARIS.REMOTEQ
«E¬ Queue name at remote system «B¬ SOLARIS.LOCALQ
«F¬ Transmission queue name SOLARIS
«G¬ Sender (SNA) channel name GIS.SOLARIS.SNA
«H¬ Sender (TCP/IP) channel name GIS.SOLARIS.TCP
«I¬ Receiver (SNA) channel name «G¬ SOLARIS.GIS.SNA
«J¬ Receiver (TCP/IP) channel name «H¬ SOLARIS.GIS.TCP
| Connection to MQSeries for AS/400
| The values in this section of the table must match those used in Table 43 on page 472, as indicated.
| «C¬ Remote queue manager name AS400
| «D¬ Remote queue name AS400.REMOTEQ
| «E¬ Queue name at remote system «B¬ AS400.LOCALQ
| «F¬ Transmission queue name AS400
| «G¬ Sender (SNA) channel name GIS.AS400.SNA
| «H¬ Sender (TCP/IP) channel name GIS.AS400.TCP
| «I¬ Receiver (SNA) channel name «G¬ AS400.GIS.SNA
| «J¬ Receiver (TCP) channel name «H¬ AS400.GIS.TCP
Connection to MQSeries for OS/390 or MVS/ESA without CICS
The values in this section of the table must match those used in Table 37 on page 406, as indicated.
«C¬ Remote queue manager name MVS
«D¬ Remote queue name MVS.REMOTEQ
«E¬ Queue name at remote system «B¬ MVS.LOCALQ
«F¬ Transmission queue name MVS
«G¬ Sender (SNA) channel name GIS.MVS.SNA
«H¬ Sender (TCP) channel name GIS.MVS.TCP
«I¬ Receiver (SNA) channel name «G¬ MVS.GIS.SNA
«J¬ Receiver (TCP) channel name «H¬ MVS.GIS.TCP
Connection to MQSeries for VSE/ESA
The values in this section of the table must match those used in Table 45 on page 490, as indicated.
«C¬ Remote queue manager name VSE
«D¬ Remote queue name VSE.REMOTEQ
«E¬ Queue name at remote system «B¬ VSE.LOCALQ
«F¬ Transmission queue name VSE
Chapter 17. Example configuration - IBM MQSeries for AT&T GIS UNIX Version 2.2 255
AT&T GIS UNIX configuration
First it describes the parameters needed for an LU 6.2 connection, then it describes
“Establishing a connection using SunLink Version 9.1” on page 261 and
“Establishing a TCP connection” on page 271.
Once the connection is established, you need to define some channels to complete
the configuration. This is described in “MQSeries for Sun Solaris configuration” on
page 271.
Configuration worksheet
Use this worksheet to record the values you use for your configuration. Where
numbers appear in the Reference column they indicate that the value must match
that in the appropriate worksheet elsewhere in this book. The examples that follow
in this chapter refer back to the values in the ID column. The entries in the
Parameter Name column are explained in “Explanation of terms” on page 260.
Table 27. Configuration worksheet for SunLink Version 9.1
ID Parameter Name Reference Example User Value
Parameters for local node
«1¬ PU 2.1 server name SOLSERV
«2¬ Network name NETID
The values in this section of the table must match those used in Table 14 on page 138, as indicated.
«10¬ Unique session name OS2SESS
«11¬ Network name «2¬ NETID
«12¬ DLC name OS2QMGR
«13¬ Remote CP name OS2PU
«14¬ Local LSAP x‘04’, x‘08’, x‘0C’, ...
«15¬ Partner LU «6¬ OS2LU
«16¬ TP name «8¬ MQSERIES
«17¬ Mode name «17¬ #INTER
«18¬ CPI-C file name /home/mqstart/OS2CPIC
«19¬ Remote MAC address «10¬ 10005AFC5D83
Connection to a Windows NT system
The values in this section of the table must match those used in Table 16 on page 170, as indicated.
«10¬ Unique session name WINNTSESS
«11¬ Network name «2¬ NETID
«12¬ DLC name NTQMGR
«13¬ Remote CP name WINNTPU
«14¬ Local LSAP x‘04’, x‘08’, x‘0C’, ...
«15¬ Partner LU «6¬ WINNTLU
«16¬ TP name «8¬ MQSERIES
«17¬ Mode name «17¬ #INTER
«18¬ CPI-C file name /home/mqstart/NTCPIC
«19¬ Remote MAC address «10¬ 10005AFC5D83
Connection to an AIX system
The values in this section of the table must match those used in Table 20 on page 197, as indicated.
«10¬ Unique session name AIXSESS
«11¬ Network name «1¬ NETID
«12¬ DLC name AIXQMGR
«13¬ Remote CP name «2¬ AIXPU
«14¬ Local LSAP x‘04’, x‘08’, x‘0C’, ...
«15¬ Partner LU «4¬ AIXLU
«16¬ TP name «6¬ MQSERIES
«17¬ Mode name «14¬ #INTER
«18¬ CPI-C file name /home/mqstart/AIXCPIC
«19¬ Remote MAC address «15¬ 10005AFC5D83
The values in this section of the table must match those used in Table 23 on page 219, as indicated.
«10¬ Unique session name HPUXSESS
«11¬ Network name «4¬ NETID
«12¬ DLC name HPUXQMGR
«13¬ Remote CP name HPUXPU
«14¬ Local LSAP x‘04’, x‘08’, x‘0C’, ...
«15¬ Partner LU «5¬ HPUXLU
«16¬ TP name «7¬ MQSERIES
«17¬ Mode name «17¬ #INTER
«18¬ CPI-C file name /home/mqstart/HPCPIC
«19¬ Remote MAC address «19¬ 10005AFC5D83
Connection to an AT&T GIS UNIX system
The values in this section of the table must match those used in the Table 25 on page 243, as indicated.
«10¬ Unique session name GISSESS
«11¬ Network name «2¬ NETID
«12¬ DLC name GISQMGR
«13¬ Remote CP name GISPU
«14¬ Local LSAP x‘04’, x‘08’, x‘0C’, ...
«15¬ Partner LU «6¬ GISLU
«16¬ TP name «8¬ MQSERIES
«17¬ Mode name «17¬ #INTER
«18¬ CPI-C file name /home/mqstart/ATTCPIC
«19¬ Remote MAC address «10¬ 10005AFC5D83
Connection to an AS/400 system
The values in this section of the table must match those used in Table 42 on page 460, as indicated.
«10¬ Unique session name AS400SESS
«11¬ Network name «2¬ NETID
«12¬ DLC name ASQMGR
«13¬ Remote CP name AS400PU
«14¬ Local LSAP x‘04’, x‘08’, x‘0C’, ...
«15¬ Partner LU «6¬ AS400LU
«16¬ TP name «8¬ MQSERIES
«17¬ Mode name «17¬ #INTER
«18¬ CPI-C file name /home/mqstart/400CPIC
«19¬ Remote MAC address «10¬ 10005AFC5D83
Connection to an OS/390 or MVS/ESA system without CICS
The values in this section of the table must match those used in Table 36 on page 396, as indicated.
«10¬ Unique session name MVSSESS
«11¬ Network name «2¬ NETID
«12¬ DLC name MVSQMGR
«13¬ Remote CP name MVSPU
«14¬ Local LSAP x‘04’, x‘08’, x‘0C’, ...
«15¬ Partner LU «6¬ MVSLU
Chapter 18. Example configuration - IBM MQSeries for Sun Solaris 259
Sun Solaris and LU 6.2
Table 27. Configuration worksheet for SunLink Version 9.1 (continued)
ID Parameter Name Reference Example User Value
«16¬ TP name «8¬ MQSERIES
«17¬ Mode name «17¬ #INTER
«18¬ CPI-C file name /home/mqstart/MVSCPIC
«19¬ Remote MAC address «10¬ 10005AFC5D83
Connection to a VSE/ESA system
The values in this section of the table must match those used in Table 44 on page 485, as indicated.
«10¬ Unique session name VSESESS
«11¬ Network name «2¬ NETID
«12¬ DLC name VSEQMGR
«13¬ Remote CP name VSEPU
«14¬ Local LSAP x‘04’, x‘08’, x‘0C’, ...
«15¬ Partner LU «6¬ VSELU
«16¬ TP name «8¬ MQSERIES
«17¬ Mode name «17¬ #INTER
«18¬ CPI-C file name /home/mqstart/VSECPIC
«19¬ Remote MAC address «10¬ 10005AFC5D83
Explanation of terms
«1¬ PU2.1 server name
This is the name of the PU2.1 server for the local control point.
«2¬ Network name
This is the unique ID of the network to which you are connected. It is an
alphanumeric value and can be 1-8 characters long. The network name
works with the Control Point name to uniquely identify a system. Your
network administrator will tell you the value.
«3¬ CP name
This is the unique Control Point name for this workstation. Your network
administrator will assign this to you.
«4¬ Line name
This is the name that identifies the connection to the LAN.
«5¬ Local MAC address
This is the network address of the token-ring card. The address to be
specified is found in the ether value displayed in response to the
ifconfig tr0 command issued at a root level of authority. (Tr0 is the name
of the machine’s token-ring interface.) If you do not have the necessary
level of authority, your Sun Solaris system administrator can tell you the
value.
«6¬ Local terminal ID
This is the unique ID of this workstation. On other platforms this is often
referred to as the Exchange ID or XID. Your network administrator will
assign this ID for you.
«7¬ Local LU name
An LU manages the exchange of data between transactions. The local LU
name is the name of the LU on your system. Your network administrator
will assign this to you.
Chapter 18. Example configuration - IBM MQSeries for Sun Solaris 261
Using SunLink
Chapter 18. Example configuration - IBM MQSeries for Sun Solaris 263
Using SunLink
4. Enter the DLC Name («12¬) and Remote MAC Address («19¬).
5. Click on Advanced>>. A window entitled Create DLC (advanced) appears:
6. Enter the Local LSAP for this DLC («14¬), Local Terminal ID («6¬), and
Remote CP Name («13¬).
7. When you are happy with the settings, click on OK.
Configuring an independent LU
1. Double click on Systems in the resource tree to display a list of systems.
2. Double click on the system name to open its subordinate entries.
3. Double click on PU2.1 Servers to display a list of servers.
4. Double click on the PU2.1 server name to open its subordinate entries.
Chapter 18. Example configuration - IBM MQSeries for Sun Solaris 265
Using SunLink
5. From the main window, select Edit, New, and Independent LU to display the
Create Independent LU window:
8. Enter the Network Qual Name. This consists of the Network Name («2¬) and
the Local LU («7¬).
9. Click on OK
Configuring a partner LU
1. Double click on the PU2.1 server name in the resource tree to open its
subordinate entries.
2. From the main window, select Edit, New, and Partner LU to display the Create
Partner LU window:
Chapter 18. Example configuration - IBM MQSeries for Sun Solaris 267
Using SunLink
Chapter 18. Example configuration - IBM MQSeries for Sun Solaris 269
Using SunLink
Invokable TP path
In order to set required environment variables a script file should be defined for
each invokable TP containing the following:
#!/bin/ksh
export APPC_GATEWAY=zinfandel
export APPC_LOCAL_LU=SOLARLU
/opt/mqm/bin/amqcrs6a -m SOLARIS -n MQSERIES
Figure 35. CPI-C side information file for SunLink Version 9.0
The location of the file must be specified either explicitly in the conname
parameter of the sender channel definition or in the search path. It is better to
specify it fully in the conname parameter because the value of the PATH
environment variable can vary from user to user.
What next?
The connection is now established. You are ready to complete the configuration.
Go to “MQSeries for Sun Solaris configuration”.
What next?
The TCP/IP connection is now established. You are ready to complete the
configuration. Go to “MQSeries for Sun Solaris configuration”.
Chapter 18. Example configuration - IBM MQSeries for Sun Solaris 271
Sun Solaris configuration
| 4. For an SNA or LU6.2 channel, if you experience an error when you try to load
| the communications library, probably file liblu62.so cannot be found. A likely
| solution to this problem is to add its location, which is probably
| /opt/SUNWlu62, to LD_LIBRARY_PATH.
Basic configuration
1. Create the queue manager from the UNIX prompt using the command:
crtmqm -u dlqname -q solaris
where:
solaris
Is the name of the queue manager
-q Indicates that this is to become the default queue manager
-u dlqname
Specifies the name of the undeliverable message queue
where solaris is the name given to the queue manager when it was created.
Channel configuration
The following section details the configuration to be performed on the Sun Solaris
queue manager to implement the channel described in Figure 32 on page 97.
The MQSC command to create each object is shown. Either start runmqsc from a
UNIX prompt and enter each command in turn, or build the commands into a
command file.
Examples are given for connecting MQSeries for Sun Solaris and MQSeries for
OS/2 Warp. If you wish to connect to another MQSeries product use the
appropriate set of values from the table in place of those for OS/2.
Note: The words in bold are user-specified and reflect the names of MQSeries
objects used throughout these examples. If you change the names used here,
ensure that you also change the other references made to these objects
throughout this book. All others are keywords and should be entered as
shown.
Table 28. Configuration worksheet for MQSeries for Sun Solaris
ID Parameter Name Reference Example Used User Value
Definition for local node
«A¬ Queue Manager Name SOLARIS
«B¬ Local queue name SOLARIS.LOCALQ
Connection to MQSeries for OS/2 Warp
The values in this section of the table must match those used in Table 15 on page 164, as indicated.
«C¬ Remote queue manager name «A¬ OS2
«D¬ Remote queue name OS2.REMOTEQ
«E¬ Queue name at remote system «B¬ OS2.LOCALQ
«F¬ Transmission queue name OS2
«G¬ Sender (SNA) channel name SOLARIS.OS2.SNA
The values in this section of the table must match those used in Table 17 on page 185, as indicated.
«C¬ Remote queue manager name «A¬ WINNT
«D¬ Remote queue name WINNT.REMOTEQ
«E¬ Queue name at remote system «B¬ WINNT.LOCALQ
«F¬ Transmission queue name WINNT
«G¬ Sender (SNA) channel name SOLARIS.WINNT.SNA
«H¬ Sender (TCP/IP) channel name SOLARIS.WINNT.TCP
«I¬ Receiver (SNA) channel name «G¬ WINNT.SOLARIS.SNA
«J¬ Receiver (TCP) channel name «H¬ WINNT.SOLARIS.TCP
Connection to MQSeries for AIX
The values in this section of the table must match those used in Table 21 on page 211, as indicated.
«C¬ Remote queue manager name «A¬ AIX
«D¬ Remote queue name AIX.REMOTEQ
«E¬ Queue name at remote system «B¬ AIX.LOCALQ
«F¬ Transmission queue name AIX
«G¬ Sender (SNA) channel name SOLARIS.AIX.SNA
«H¬ Sender (TCP) channel name SOLARIS.AIX.TCP
«I¬ Receiver (SNA) channel name «G¬ AIX.SOLARIS.SNA
«J¬ Receiver (TCP) channel name «H¬ AIX.SOLARIS.TCP
| Connection to MQSeries for DIGITAL UNIX (Compaq Tru64 UNIX)
| The values in this section of the table must match those used in Table 22 on page 216, as indicated.
| «C¬ Remote queue manager name «A¬ DECUX
| «D¬ Remote queue name DECUX.REMOTEQ
| «E¬ Queue name at remote system «B¬ DECUX.LOCALQ
| «F¬ Transmission queue name DECUX
| «H¬ Sender (TCP) channel name DECUX.SOLARIS.TCP
| «J¬ Receiver (TCP) channel name «H¬ SOLARIS.DECUX.TCP
Connection to MQSeries for HP-UX
The values in this section of the table must match those used in Table 24 on page 239, as indicated.
«C¬ Remote queue manager name «A¬ HPUX
«D¬ Remote queue name HPUX.REMOTEQ
«E¬ Queue name at remote system «B¬ HPUX.LOCALQ
«F¬ Transmission queue name HPUX
«G¬ Sender (SNA) channel name SOLARIS.HPUX.SNA
«H¬ Sender (TCP) channel name SOLARIS.HPUX.TCP
«I¬ Receiver (SNA) channel name «G¬ HPUX.SOLARIS.SNA
«J¬ Receiver (TCP/IP) channel name «H¬ HPUX.SOLARIS.TCP
Connection to MQSeries for AT&T GIS UNIX
The values in this section of the table must match those used in Table 26 on page 253, as indicated.
Chapter 18. Example configuration - IBM MQSeries for Sun Solaris 273
Sun Solaris configuration
Table 28. Configuration worksheet for MQSeries for Sun Solaris (continued)
ID Parameter Name Reference Example Used User Value
«C¬ Remote queue manager name «A¬ GIS
«D¬ Remote queue name GIS.REMOTEQ
«E¬ Queue name at remote system «B¬ GIS.LOCALQ
«F¬ Transmission queue name GIS
«G¬ Sender (SNA) channel name SOLARIS.GIS.SNA
«H¬ Sender (TCP/IP) channel name SOLARIS.GIS.TCP
«I¬ Receiver (SNA) channel name «G¬ GIS.SOLARIS.SNA
«J¬ Receiver (TCP/IP) channel name «H¬ GIS.SOLARIS.TCP
| Connection to MQSeries for AS/400
| The values in this section of the table must match those used in Table 43 on page 472, as indicated.
| «C¬ Remote queue manager name AS400
| «D¬ Remote queue name AS400.REMOTEQ
| «E¬ Queue name at remote system «B¬ AS400.LOCALQ
| «F¬ Transmission queue name AS400
| «G¬ Sender (SNA) channel name SOLARIS.AS400.SNA
| «H¬ Sender (TCP) channel name SOLARIS.AS400.TCP
| «I¬ Receiver (SNA) channel name «G¬ AS400.SOLARIS.SNA
| «J¬ Receiver (TCP) channel name «H¬ AS400.SOLARIS.TCP
Connection to MQSeries for OS/390 or MVS/ESA without CICS
The values in this section of the table must match those used in Table 37 on page 406, as indicated.
«C¬ Remote queue manager name MVS
«D¬ Remote queue name MVS.REMOTEQ
«E¬ Queue name at remote system «B¬ MVS.LOCALQ
«F¬ Transmission queue name MVS
«G¬ Sender (SNA) channel name SOLARIS.MVS.SNA
«H¬ Sender (TCP) channel name SOLARIS.MVS.TCP
«I¬ Receiver (SNA) channel name «G¬ MVS.SOLARIS.SNA
«J¬ Receiver (TCP) channel name «H¬ MVS.SOLARIS.TCP
Connection to MQSeries for VSE/ESA
The values in this section of the table must match those used in Table 45 on page 490, as indicated.
«C¬ Remote queue manager name VSE
«D¬ Remote queue name VSE.REMOTEQ
«E¬ Queue name at remote system «B¬ VSE.LOCALQ
«F¬ Transmission queue name VSE
«G¬ Sender channel name SOLARIS.VSE.SNA
«I¬ Receiver channel name «G¬ VSE.SOLARIS.SNA
Chapter 18. Example configuration - IBM MQSeries for Sun Solaris 275
Sun Solaris configuration
For OS/2 and Windows NT, see “Chapter 10. Setting up communication for OS/2
and Windows NT” on page 123. For UNIX systems, see “Chapter 13. Setting up
communication in UNIX systems” on page 191. For Tandem NSK, see “Chapter 20.
Setting up communication in Tandem NSK” on page 289.
Deciding on a connection
There are four forms of communication for MQSeries on Digital OpenVMS
systems:
v TCP
v LU 6.2
v DECnet Phase IV
v DECnet Phase V
Each channel definition must specify one only as the transmission protocol
(Transport Type) attribute. One or more protocols may be used by a queue
manager.
For MQSeries clients, it may be useful to have alternative channels using different
transmission protocols. See the MQSeries Clients book.
Sending end
Specify the host name, or the TCP address of the target machine, in the Connection
Name field of the channel definition. Port number 1414 is assigned by the Internet
Assigned Numbers Authority to MQSeries.
To use a port number other than the default, change the connection name field
thus:
Connection Name REMHOST(1822)
where REMHOST is the hostname of the remote machine and 1822 is the port number
required. (This must be the port that the listener at the receiving end is listening
on.)
Alternatively you can change the default sending port number by specifying it in
the queue manager configuration file (qm.ini):
TCP:
Port=1822
For more information about the values you set using qm.ini, see “Appendix D.
Configuration file stanzas for distributed queuing” on page 637.
Place this file in the SYS$MANAGER directory. In this example the name of the
file is MQRECV.COM.
Notes:
a. If you have multiple queue managers you must make a new file and UCX
service for each queue manager.
b. Ensure that the protection on the file and its parent directory allow it to be
executable, that is, the protection is /PROT=W:RE.
| 2. Create a UCX service to start the receiving channel program automatically:
| $ UCX
| UCX> set service <p1>/port=<p2>/protocol=TCP/user_name=MQM -
| UCX> /process=<p3>/file=<p4>/limit=<p5>
| where:
| p1 Is the service name, for example MQSERIES01. A unique name is
| required for each queue manager defined.
| p2 Is the TCP/IP port number in the range 1 to 65 535. The default value
| for MQSeries is 1414.
| If a receiving channel does not start when the sending end starts, it is probably
| due to the permissions on the file being incorrect.
3. To enable the service upon every system IPL (reboot), issue the command
'MULTINET
CONFIGURE /SERVER RESTART'.
Place this file in the SYS$MANAGER directory. In this example the name
mqrecv.com is used.
2. Create an Attachmate service to start the receiving channel program
automatically.
You do this by adding the following lines to the file
TWG$COMMON:[NETDIST.ETC]SERVERS.DAT.
# MQSeries
service-name MQSeries
program SYS$MANAGER:MQRECV.COM
socket-type SOCK_STREAM
socket-options SO_ACCEPTCONN | SO_KEEPALIVE
socket-address AF_INET , 1414
working-set 512
priority 4
INIT TCP_Init
LISTEN TCP_Listen
CONNECTED TCP_Connected
SERVICE Run_Program
username MQM
device-type UCX
Place this file in the SYS$MANAGER directory. In this example the name of the
file is MQRECV.COM.
Notes:
a. If you have multiple queue managers you must make a new file and
TCPware service for each queue manager.
b. Ensure that the protection on the file and its parent directory allow it to be
executable, that is, the protection is /PROT=W:RE.
2. Create a TCPware service to start the receiving channel program automatically:
a. Edit the TCPWARE:SERVICES. file and add an entry for the service you
want to use:
MQSeries 1414/tcp # MQSeries port
/INPUT=SYS$MANAGER:MQRECV.COM -
/LIMIT=6 -
/OPTION=KEEPALIVE -
/USERNAME=MQM
EXIT
3. The service is enabled automatically after the next system IPL. To enable the
service immediately issue the command:
@TCPWARE:SERVERS.COM
SNA configuration
To enable MQSeries to work with DECnet APPC/LU 6.2 you must complete your
Gateway SNA configuration first. The Digital SNA configuration must be in
agreement with the Host SNA configuration.
Notes:
1. When configuring your host system, be aware that the DECnet SNA Gateway
supports PU 2.0 and not node type 2.1. This means that the LUs on the Digital
SNA node must be dependent LUs. They reside on the Digital SNA node and
so must be defined and configured there. However, because they are dependent
LUs, they have to be activated by VTAM, by means of an ACTLU command,
and so they also need to be defined to VTAM as dependent LUs.
2. Ensure that the SNA libraries are installed as shared images upon each system
IPL by running the command @SYS$STARTUP:SNALU62$STARTUP.COM in the system
startup procedure.
where <node> is replaced with the node name of your DECnet SNA gateway.
The SNA Gateway installation procedure creates the file in the directory
SYS$COMMON:[SNA$CSV].
The configuration information in this file is downloaded to the Gateway when you
run the NCP LOAD NODE command.
Notes:
1. Online changes to the current Gateway configuration can be made using the
utility SNANCP.
2. SNA resources can be monitored using the SNAP utility.
Note: If you use a single access name, with a range of LUs specified, the Gateway
selects the LUs in a circular order. Therefore the LU selected by the Gateway
may not correspond with the LU used by the Host channel, because the
Host associates a specific LU with a channel.
The access name is used only to communicate between the DECnet SNA APPC
program and the Gateway. It has no network meaning.
Notes:
1. The LUs are single session. You must define a separate LU for each channel if
they are to run simultaneously.
2. You are advised to use names that associate the access name to the
corresponding channel, but you can choose any name.
3. The APPL in the ACCESS name definition must match the remote (in this case
MVSLU) APPL in VTAM.
4. The LU number must correspond to the LOCADDR in the LU definition
statement in VTAM. Here is an example VTAM line and LU definitions:
IYA8L007 LINE ADDRESS=(007,FULL),
ISTATUS=ACTIVE
IYA8P307 PU ADDR=C2,
ISTATUS=ACTIVE,
IRETRY=NO,
The DECnet SNA Gateway Guide to IBM Parameters details the parameters
expected by the Gateway.
The CONNAME also includes the TPNAME that is used by the SNA Allocate verb
to invoke the remote program.
Note: Each server and receiver channel requires its own listener process.
You can check the LU status using SNANCP to make sure that you are in
active-listening state on the correct LU. If a BIND from the host arrives specifying
the LU that is in active-listening state, the session will be established. After
establishing the session, the host attempts to allocate a conversation.
The TPNAME used by the host sender/requester channel must be the same name
as that specified on the command line in order to establish the conversation.
In this example two channels, a sender and a receiver, have been set up.
On the remote system you need to configure the corresponding channels. Channels
that talk to each other must have the same name.
v The OpenVMS sender, VMS.TO.HOST, talks to a receiver called VMS.TO.HOST
on the host system.
v The OpenVMS receiver, HOST.TO.VMS talks to a sender HOST.TO.VMS on the
host system.
Note: The TPNAME must match the outbound TPNAME on the MVS sender channel
side. This is specified in the MVS side information, for example:
SIDELETE
DESTNAME(ID1)
SIADD
DESTNAME(ID1)
MODENAME(LU62SS)
TPNAME(MQSERIES)
PARTNER_LU(IYA83072)
Problem solving
Error PUNOTAVA - PU has not been activated
This error indicates a lack of connectivity between the two machines. Make sure
your line and circuit are set to state ON. Use SNATRACE at the circuit level to
verify that the Digital OpenVMS machine is polling. If no response is received for
the poll, check that the PU on the host is enabled. If the line will not go to the ON
STATE check your physical line. If the trace shows the host responding to the poll,
but the PU still does not become active, check your setting of the STATION ID.
This error is returned by a sender or requester to indicate that allocate failed. Run
trace to verify that the session can be established. Verify that the Digital OpenVMS
machine sends the INIT-SELF (010681). If there is no response to the INIT-SELF
make sure that the host MQSeries channel is started. If the BIND from the host is
rejected by the Digital OpenVMS machine analyze the Digital bind response. Use
the DECnet SNA Gateway Guide to IBM Parameters to see what is set incorrectly in
the mode. If a session is established and the conversation allocate request is
rejected verify that the TPNAMEs are configured the same on both systems.
For receivers and servers verify that a BIND is sent by the host. If not, enable the
Host MQSeries channel. If the BIND is rejected check the reason for rejection.
Make sure that the Digital OpenVMS listener LU is the LU with which the host is
trying to establish a session.
Place this file in the SYS$MANAGER directory. In this example the file is
named MQRECVDECNET.COM.
Notes:
a. If you have multiple queue managers you must make a new file and
DECnet object for each queue manager.
b. If a receiving channel does not start when the sending end starts, it is
probably due to the permissions on this file being incorrect.
2. Create a DECnet object to start the receiving channel program automatically.
You must supply the correct password for MQSeries.
$ MCR NCP
NCP> define object MQSERIES
Object number (0-255): 0
File name (filename):sys$manager:mqrecvdecnet.com
Privileges (List of VMS privileges):
Outgoing connect privileges (List of VMS privileges):
User ID (1-39 characters): mqm
Password (1-39 characters): mqseries
Account (1-39 characters):
Proxy access (INCOMING, OUTGOING, BOTH, NONE, REQUIRED):
NCP> set known objects all
NCP> exit
Note: You could use proxy user identifiers rather than actual user identifiers.
This will prevent any unauthorized access to the database. Information
on how to set up proxy identifiers is given in the Digital DECnet for
OpenVMS Networking Manual.
3. Ensure that all known objects are set when DECnet is started.
For OS/2 and Windows NT, see “Chapter 10. Setting up communication for OS/2
and Windows NT” on page 123. For UNIX systems, see “Chapter 13. Setting up
communication in UNIX systems” on page 191. For Digital OpenVMS, see
“Chapter 19. Setting up communication in Digital OpenVMS systems” on page 277.
Deciding on a connection
There are two forms of communication for MQSeries for Tandem NonStop Kernel:
v TCP
v LU 6.2
Each channel definition must specify one only as the transmission protocol
(Transport Type) attribute. One or more protocols may be used by a queue
manager.
SNA channels
The following channel attributes are necessary for SNA channels in MQSeries for
Tandem NonStop Kernel:
CONNAME
The value of CONNAME depends on whether SNAX or ICE is used as the
communications protocol:
If SNAX is used:
CONNAME(’$PPPP.LOCALLU.REMOTELU’)
Applies to sender, requester, and fully-qualified server channels,
where:
$PPPP Is the process name of the SNAX/APC process.
LOCALLU
Is the name of the Local LU.
REMOTELU
Is the name of the partner LU on the remote machine.
For example:
CONNAME('$BP01.IYAHT080.IYCNVM03')
For example:
CONNAME('$BP01.IYAHT080')
If ICE is used:
CONNAME(’$PPPP.#OPEN.LOCALLU.REMOTELU’)
Applies to sender, requester, and fully-qualified server channels,
where:
$PPPP Is the process name of the ICE process.
#OPEN
Is the ICE open name.
LOCALLU
Is the name of the Local LU.
REMOTELU
Is the name of the partner LU on the remote machine.
For example:
CONNAME('$ICE.#IYAHT0C.IYAHT0C0.IYCNVM03')
CONNAME(’$PPPP.#OPEN.LOCALLU’)
Applies to receiver and non fully-qualified server channels, where:
$PPPP Is the process name of the SNAX/APC process.
#OPEN
Is the ICE open name.
LOCALLU
Is the name of the Local LU. This value can be an asterisk
(*), indicating any name.
For example:
CONNAME('$ICE.#IYAHT0C.IYAHT0C0')
MODENAME
Is the SNA mode name. For example, MODENAME(LU62PS).
TPNAME(’LOCALTP[.REMOTETP]’)
Is the Transaction Process (TP) name.
LOCALTP
Is the local name of the TP.
REMOTETP
Is the name of the TP on the remote machine. This value is
optional. If it is not specified, and the channel is one that initiates a
conversation (that is, a sender, requester, or fully-qualified server
channel) the LOCALTP name is used.
TCP channels
For information about using a nondefault TCP process for communications via
TCP, and information about the TCP ports a queue manager listens on, see the
MQSeries for Tandem NonStop Kernel System Management Guide.
Communications examples
This section provides communications setup examples for SNA (SNAX and ICE)
and TCP.
==
== SCF configuration file for defining SNA LINE, PUs, and LUs to VTAM
== Line is called $SNA02 and SYSGEN'd into the Tandem system
==
ALLOW ALL
ASSUME LINE $SNA02
ABORT, SUB LU
ABORT, SUB PU
ABORT
DELETE, SUB LU
DELETE, SUB PU
DELETE
ADD LINE $SNA02, STATION SECONDARY, MAXPUS 5, MAXLUS 1024, RECSIZE 2048, &
CHARACTERSET ASCII, MAXLOCALLUS 256, &
PUIDBLK %H05D, PUIDNUM %H312FB
==
== ADD REMOTE PU OBJECT, LOCAL IS IMPLICITLY DEFINED AS #ZNT21
==
ADD PU #PU2, ADDRESS 1, MAXLUS 16, RECSIZE 2046, TYPE (13,21), &
TRRMTADDR 04400045121088, DYNAMIC ON, &
ASSOCIATESUBDEV $CHAMB.#p2, &
TRSSAP %H04, &
CPNAME IYAQCDRM, SNANETID GBIBMIYA
==
== ADD LOCAL LU OBJECT
==
==
== ADD PARTNER LU OBJECTS
==
== spinach (HP)
== stingray (AIX)
== coop007 (OS/2)
== MVS CICS
== MVS Non-CICS
== finnr100 (NT)
== winas18 (AS400)
== MQ-Portuguese (OS/2)
== VSE
START
START, SUB PU
STATUS
STATUS, SUB PU
STATUS, SUB LU
SYSGEN parameters
The following are CONFTEXT file entries for a SYSGEN to support the SNA and
token ring lines:
!**************************************************************************
! LAN MACRO
!**************************************************************************
! This macro is used for all 361x LAN controllers
! REQUIRES T9375 SOFTWARE PACKAGE
C3613|MLAM = MLAM
TYPE 56, SUBTYPE 0,
PROGRAM C9376P00,
INTERRUPT IOP|INTERRUPT|HANDLER,
MAXREQUESTSIZE 32000,
RSIZE 32000,
BURSTSIZE 16,
LINEBUFFERSIZE 32,
STARTDOWN #;
!**************************************************************************
! SNAX macro for Token ring lines
!**************************************************************************
TOKEN|RING|SNAX|MACRO = SNATS
TYPE 58,
SUBTYPE 4,
RSIZE 1024,
SUBTYPE 4,
FRAMESIZE 1036 # ;
!**************************************************************************
! LAN CONTROLLER
!**************************************************************************
LAN1 3616 0,1 %130 ;
Note: The pathway process $BP01 is created using the Tandem utility APCRUN.
==
== SCF Configuration file for SNAX/APC Lus
==
ALLOW ERRORS
ABORT SESSION *
ABORT TPN *
ABORT PTNR-MODE *
ABORT PTNR-LU *
ABORT LU *
DELETE TPN *
DELETE PTNR-MODE *
DELETE PTNR-LU *
DELETE LU *
==
== ADD LOCAL LU
==
ADD LU IYAHT080, SNANAME GBIBMIYA.IYAHT080, SNAXFILENAME $SNA02.#ZNTLU1, &
MAXSESSION 256, AUTOSTART YES
==
== Winas18 (AS400) Partner LU
==
==
== Stingray (AIX) Partner LU
==
==
== coop007 (OS/2) Partner LU
==
==
== MQ-Portuguese (OS/2) Partner LU
==
==
== MVS CICS Partner LU
==
==
== MVS Non CICS Partner LU
==
==
== Start the LUs
==
Channel definitions
Here are some example MQSeries channel definitions that support the SNAX
configuration:
v A sender channel to MQSeries on OS/390 (not using CICS):
DEFINE CHANNEL(MT01.VM03.SDRC.0002) CHLTYPE(SDR) +
TRPTYPE(LU62) +
SEQWRAP(9999999) MAXMSGL(2048) +
XMITQ('VM03NCM.TQ.SDRC.0001') +
CONNAME('$BP01.IYAHT080.IYCNVM03') +
MODENAME('LU62PS') TPNAME(DUMMY)
v A receiver channel from MQSeries on OS/390:
DEFINE CHANNEL(VM03.MT01.SDRC.0002) CHLTYPE(RCVR) +
TRPTYPE(LU62) REPLACE DESCR('Receiver channel from VM03NCM') +
SEQWRAP(9999999) +
MAXMSGL(2048) AUTOSTART(ENABLED) +
CONNAME('$BP01.IYAHT080') TPNAME(VM03NCMSDRCRCVR)
v A server channel to MQSeries on OS/390 which is capable of initiating a
conversation, or being initiated by a remote requester channel:
DEFINE CHANNEL(MT01.VM03.RQSV.0002) CHLTYPE(SVR) +
TRPTYPE(LU62) +
SEQWRAP(9999999) MAXMSGL(2048) +
XMITQ('VM03NCM.TQ.RQSV.0001') +
CONNAME('$BP01.IYAHT080.IYCNVM03') +
MODENAME('LU62PS') TPNAME(VM03NCMRQSVSVR.DUMMY) +
AUTOSTART(ENABLED)
where DUMMY is the TPNAME the MVS queue manager is listening on.
?tacl macro
clear all
param backupcpu 1
param cinittimer 120
param collector $0
param config icectl
param idblk 05d
param idnum 312FF
param cpname IYAHR00C
param datapages 64
param dynamicrlu yes
param genesis $gen
param maxrcv 4096
param loglevel info
param netname GBIBMIYA
param password xxxxxxxxxxxxxxxxxxxx
param retrys1 5
param secuserid super.super
param startup %1%
param timer1 20
param timer2 300
param usstable default
run $system.ice.ice/name $ICE,nowait,cpu 0,pri 180,highpin off/
==
== ICE definitions for PU IYAHR00C.
== Local LU for this PU is IYAHT0C0.
==
ALLOW ERRORS
OPEN $ICE
==
== ADD TOKEN RING LINE
==
==
== ADD PU OBJECT
==
==
== Add Local APPL Object
==
==
== Add Mode LU62PS
==
==
== Add Partner LU Objects
==
== spinach (HP)
== stingray (AIX)
== coop007 (OS/2)
== MVS Non-CICS
== finnr100 (NT)
== winas18 (AS400)
==
== START UP ICE LINE $ICE01 AND SUB DEVICE
==
Note: In order for this configuration to work, the port #ICE must have been
defined to the token ring line. For example, these commands could be
entered into SCF:
add port $chamb.#ice, type tr8025, address %H08
start port $chamb.#ice
where $chamb is a token-ring controller, and the SAP of the port is %08.
where DUMMY is the TPNAME the MVS queue manager is listening on.
The TCPPort value is the default outbound port for channels without a port value
in the CONNAME field. TCPListenerPort identifies the port on which the TCP
listener will listen.
| A queue manager can have multiple TCP/IP listeners. If this is the case, the
| QMINI file must have a TCPListenerPort entry for each listener, and
| TCPNumListenerPort must be updated to match. For example, the TCPConfig stanza
| above would be changed as follows:
| TCPConfig:
| TCPPort=1414
| TCPNumListenerPorts=2
| TCPListenerPort=1997
| TCPKeepAlive=1
This channel would try to attach to a TCP/IP port number 2000 on the host
SPINACH.
The following example shows a TCP/IP sender channel definition for a queue
manager MH01 on the host SPINACH using the default outbound TCP/IP port:
DEFINE CHANNEL(MT01_MH01_SDRC_0001) CHLTYPE(SDR) +
TRPTYPE(TCP) +
SEQWRAP(9999999) MAXMSGL(4194304) +
XMITQ('MH01_TQ_SDRC_0001') +
CONNAME('SPINACH.HURSLEY.IBM.COM')
A TCP receiver channel requires no CONNAME value, but a TCP listener must be
running. There are two ways of starting a TCP listener. Either:
1. Go into the queue manager’s pathway using pathcom, and enter:
start server mqs-tcplis00
or
2. From the TACL prompt, enter
runmqlsr -m QMgrName
Note: If problems are encountered with the TACL from which the runmqlsr is
running, the listener will be unable to access its home terminal and out file.
runmqlsr is useful for testing, but you are recommended to use the listener
from within the queue manager’s pathway as shown in step 1.
A TCP/IP listener, which will listen on the port defined in the QMINI file (in this
example, 1996), is started.
Note: This port number can be overridden by the -p Port flag on runmqlsr.
The example illustrates the use of TCP/IP connections. The example assumes that
channels are to be triggered to start when the first message arrives on the
transmission queue they are servicing. You must start the channel initiator in order
for triggering to work.
In all the examples, the MQSC commands are shown as they would appear in a
file of commands, and as they would be typed at the command line. The two
methods look identical, but, to issue a command at the command line, you must
first type runmqsc, for the default queue manager, or runmqsc qmname where qmname
is the name of the required queue manager. Then type any number of commands,
as shown in the examples.
You could verify the commands in your file before running it using:
runmqsc -v QMNAME < mqsc.in > mqsc.out
For portability, you should restrict the line length of your commands to 72
characters. Use a concatenation character to continue over more than one line. On
Tandem NSK use Ctrl-y to end the input at the command line, or enter the exit or
quit command. On OS/2, Windows NT, or Digital OpenVMS use Ctrl-z. On UNIX
systems use Ctrl-d. Alternatively, on V5.1 of MQSeries for AIX, HP-UX, OS/2
Warp, Sun Solaris, and Windows NT, use the end command.
Payroll Payroll
Query
query processing
Queue remote 'PAYROLL.QUERY'
message
Channel
Query
Reply
Reply
Figure 36. The message channel example for OS/2, Windows NT, and UNIX systems
The payroll query application puts a query message to the remote queue
“PAYROLL.QUERY” defined on QM1. This remote queue definition resolves to the
local queue “PAYROLL” on QM2. In addition, the payroll query application
specifies that the reply to the query is sent to the local queue “PAYROLL.REPLY”
on QM1. The payroll processing application gets messages from the local queue
“PAYROLL” on QM2, and sends the replies to wherever they are required; in this
case, local queue “PAYROLL.REPLY” on QM1.
In the example definitions for TCP/IP, QM1 has a host address of 9.20.9.31 and is
listening on port 1411, and QM2 has a host address of 9.20.9.32 and is listening on
port 1412. The example assumes that these are already defined on your system and
available for use.
The connection details are supplied in the CONNAME attribute of the sender
channel definitions.
All the object definitions have been provided with the DESCR and REPLACE
attributes. The other attributes supplied are the minimum required to make the
example work. The attributes that are not supplied take the default values for
queue manager QM1.
Note: The remote queue definition is not a physical queue, but a means of
directing messages to the transmission queue, QM2, so that they can
be sent to queue manager QM2.
Transmission queue definition
DEFINE QLOCAL(QM2) DESCR('Transmission queue to QM2') REPLACE +
USAGE(XMITQ) PUT(ENABLED) GET(ENABLED) TRIGGER TRIGTYPE(FIRST) +
INITQ(SYSTEM.CHANNEL.INITQ) PROCESS(QM1.TO.QM2.PROCESS)
Note: For V5.1 of MQSeries for AIX, HP-UX, OS/2 Warp, Sun Solaris, and
Windows NT the need for a process definition can be eliminated by
specifying the channel name in the TRIGGERDATA attribute of the
transmission queue.
Chapter 21. Message channel planning example for distributed platforms 307
Planning example for distributed platforms
Sender channel definition
DEFINE CHANNEL(QM1.TO.QM2) CHLTYPE(SDR) TRPTYPE(TCP) +
REPLACE DESCR('Sender channel to QM2') XMITQ(QM2) +
CONNAME('9.20.9.32(1412)')
Receiver channel definition
DEFINE CHANNEL(QM2.TO.QM1) CHLTYPE(RCVR) TRPTYPE(TCP) +
REPLACE DESCR('Receiver channel from QM2')
Reply-to queue definition
DEFINE QLOCAL(PAYROLL.REPLY) REPLACE PUT(ENABLED) GET(ENABLED) +
DESCR('Reply queue for replies to query messages sent to QM2')
You do not need to provide a remote queue definition to enable the replies to be
returned to QM1. The message descriptor of the message retrieved from local
queue PAYROLL contains both the reply-to queue and the reply-to queue manager
names. Therefore, as long as QM2 can resolve the reply-to queue manager name to
that of a transmission queue on queue manager QM2, the reply message can be
sent. In this example, the reply-to queue manager name is QM1 and so queue
manager QM2 simply requires a transmission queue of the same name.
All the object definitions have been provided with the DESCR and REPLACE
attributes and are the minimum required to make the example work. The attributes
that are not supplied take the default values for queue manager QM2.
Note: For V5.1 of MQSeries for AIX, HP-UX, OS/2 Warp, Sun Solaris, and
Windows NT the need for a process definition can be eliminated by
specifying the channel name in the TRIGGERDATA attribute of the
transmission queue.
Sender channel definition
DEFINE CHANNEL(QM2.TO.QM1) CHLTYPE(SDR) TRPTYPE(TCP) +
REPLACE DESCR('Sender channel to QM1') XMITQ(QM1) +
CONNAME('9.20.9.31(1411)')
Receiver channel definition
DEFINE CHANNEL(QM1.TO.QM2) CHLTYPE(RCVR) TRPTYPE(TCP) +
REPLACE DESCR('Receiver channel from QM1')
For information about starting the channel initiator and listener, see “Chapter 10.
Setting up communication for OS/2 and Windows NT” on page 123 and
“Chapter 13. Setting up communication in UNIX systems” on page 191.
Note: On OS/2 and Windows NT, you can also run the channel as a thread; see
the MQSeries Command Reference book for information about how to define a
channel as a threaded channel.
Chapter 21. Message channel planning example for distributed platforms 309
Planning example for distributed platforms
You should use these examples as a basis for your system. You need to generate
configuration files that are appropriate to your SNA network.
For a further description on the contents of KOGS files and Transit (SINIX LU6.2)
setup, see the Transit SINIX Version 3.2 Administration of Transit manual.
“Working configuration files for Pyramid DC/OSx” on page 313 shows example
working configuration files from the DC/OSx machine rameses. The file is
/etc/opt/lu62/cpic_cfg. For further information on the format of this file see the
Pyramid Technology publications OpenNet LU 6.2, System Administrator’s Guide,
and OpenNet SNA Engine, System Administrator’s Guide.
“Output of dbd command” on page 314 is the output of the dbd command on
cfg.ncpram, which is a binary configuration file created by the cm command.
XPU pforties,
TYP = PEER,
CONNECT = AUTO,
DISCNT = AUTO,
LINK = lbight,
NVSCONNECT = PARTNER,
MAXDATA = 1033,
XID = 00000400,
CPNAME = CP.FORTIES,
ROLE = NEG,
PAUSE = 3,
RETRIES = 10,
DMAC = 00006f106935,
DSAP = 04,
RWINDOW = 7
XLU bight,
TYP = 6,
PUCONNECT = APHSTART,
CTYP = PUBLIC,
SESS-LMT = 15,
SESS-CTR = IND,
NETNAME = SNI.BIGHT,
PAIR = forties MODE1
XRLU forties,
NETNAME = SNI.FORTIES,
PU = pforties
XMODE MODE1,
SESS-MAX = 13,
SESS-LOS = 7,
SESS-WIN = 6,
SESS-AUTO = 6,
SRU-MAX = 87,
RRU-MAX = 87,
PAC-SEND = 0,
PAC-RCV = 0
XSYMDEST sendMP01,
RLU = forties,
MODE = MODE1,
TP = recvMP01,
TP-TYP = USER,
SEC-TYP = NONE
XTP recvMP02,
UID = guenther,
TYP = USER,
PATH = /home/guenther/recvMP02.sh,
SECURE = NO
XEND
SNA CONTROLLER
controller name: SNA
controller execute name:
'startsna62 -c 24'
62 MANAGER
62 manager name: LU62MGR
62 manager execute name:
'lu62mgr'
LOCAL PU
local pu name: IYAFT1F0
controller name: SNA
non-specific type pu
unsolicited recfms is NOT supported
xid format (0/3): 3
LOCAL LU
fully qualified local lu name (hex): c7 c2 c9 c2 d4 c9 e8 c1 4b c9 e8 c1 c6 e3 f1 c6 f0
fully qualified local lu name (ebcdic): GBIBMIYA.IYAFT1F0
locally known local lu name: IYAFT1F0
local pu name: IYAFT1F0
lu number at the pu: 1
lu6.2 type lu
62 manager name: LU62MGR
lu session limit: 100
share limit: 2
send window size: 7
LU configuration options:
is NOT the default lu
will NOT terminate on disconnect
printer can NOT be used in system mode
independent LU on BF connections
REMOTE PU
remote pu name: CPPG
REMOTE LU
fully qualified remote lu name (hex): c7 c2 c9 c2 d4 c9 e8 c1 4b c9 e8 c1 c6 e3 f0 f0 f0
fully qualified remote lu name (ebcdic): GBIBMIYA.IYAFT000
locally known remote lu name: IYAFT000
fully qualified local lu name (hex): c7 c2 c9 c2 d4 c9 e8 c1 4b c9 e8 c1 c6 e3 f1 c6 f0
fully qualified local lu name (ebcdic): GBIBMIYA.IYAFT1F0
uniterpreted remote lu name (hex): c9 e8 c1 c6 e3 f0 f0 f0
uniterpreted remote lu name (ebcdic): IYAFT000
remote pu name: CPPG
session initiation requests are initiate or queue
parallel sessions supported
REMOTE LU
fully qualified remote lu name (hex): c7 c2 c9 c2 d4 c9 e8 c1 4b c9 e8 c1 c5 e3 f1 f2 f0
fully qualified remote lu name (ebcdic): GBIBMIYA.IYAET120
locally known remote lu name: IYAET120
fully qualified local lu name (hex): c7 c2 c9 c2 d4 c9 e8 c1 4b c9 e8 c1 c6 e3 f1 c6 f0
fully qualified local lu name (ebcdic): GBIBMIYA.IYAFT1F0
uniterpreted remote lu name (hex): c9 e8 c1 c5 e3 f1 f2 f0
uniterpreted remote lu name (ebcdic): IYAET120
remote pu name: CPPG
session initiation requests are initiate or queue
parallel sessions supported
no security information accepted
lu-lu verification NOT required
lu-lu password not displayed for security reasons
MODE
mode name (hex): e2 d5 c1 e2 e5 c3 d4 c7
mode name (ebcdic): SNASVCMG
fully qualified local lu name (hex): c7 c2 c9 c2 d4 c9 e8 c1 4b c9 e8 c1 c6 e3 f1 c6 f0
fully qualified local lu name (ebcdic): GBIBMIYA.IYAFT1F0
fully qualified remote lu name (hex): c7 c2 c9 c2 d4 c9 e8 c1 4b c9 e8 c1 c6 e3 f0 f0 f0
fully qualified remote lu name (ebcdic): GBIBMIYA.IYAFT000
line class name: leased
send pacing window: 7
receive pacing window: 7
lower bound max RU size, send: 128
upper bound max RU size, send: 896
lower bound max RU size, receive: 128
upper bound max RU size, receive: 896
synchronization level of none or confirm
either lu may attempt to reinitiate the session
cryptography not supported
contention-winner automatic initiation limit: 1
MODE
mode name (hex): d3 e4 f6 f2 d7 e2
mode name (ebcdic): LU62PS
fully qualified local lu name (hex): c7 c2 c9 c2 d4 c9 e8 c1 4b c9 e8 c1 c6 e3 f1 c6 f0
fully qualified local lu name (ebcdic): GBIBMIYA.IYAFT1F0
fully qualified remote lu name (hex): c7 c2 c9 c2 d4 c9 e8 c1 4b c9 e8 c1 c6 e3 f0 f0 f0
fully qualified remote lu name (ebcdic): GBIBMIYA.IYAFT000
line class name: leased
send pacing window: 7
receive pacing window: 7
lower bound max RU size, send: 128
upper bound max RU size, send: 896
lower bound max RU size, receive: 128
upper bound max RU size, receive: 896
synchronization level of none or confirm
either lu may attempt to reinitiate the session
cryptography not supported
contention-winner automatic initiation limit: 5
MODE
mode name (hex): e2 d5 c1 e2 e5 c3 d4 c7
mode name (ebcdic): SNASVCMG
fully qualified local lu name (hex): c7 c2 c9 c2 d4 c9 e8 c1 4b c9 e8 c1 c6 e3 f1 c6 f0
fully qualified local lu name (ebcdic): GBIBMIYA.IYAFT1F0
fully qualified remote lu name (hex): c7 c2 c9 c2 d4 c9 e8 c1 4b c9 e8 c1 c6 e3 f0 f1 f0
fully qualified remote lu name (ebcdic): GBIBMIYA.IYAFT010
line class name: leased
MODE
mode name (hex): d3 e4 f6 f2 d7 e2
mode name (ebcdic): LU62PS
fully qualified local lu name (hex): c7 c2 c9 c2 d4 c9 e8 c1 4b c9 e8 c1 c6 e3 f1 c6 f0
fully qualified local lu name (ebcdic): GBIBMIYA.IYAFT1F0
fully qualified remote lu name (hex): c7 c2 c9 c2 d4 c9 e8 c1 4b c9 e8 c1 c5 e3 f1 f2 f0
fully qualified remote lu name (ebcdic): GBIBMIYA.IYAET120
line class name: leased
send pacing window: 7
receive pacing window: 7
lower bound max RU size, send: 128
upper bound max RU size, send: 896
lower bound max RU size, receive: 128
upper bound max RU size, receive: 896
synchronization level of none or confirm
either lu may attempt to reinitiate the session
cryptography not supported
contention-winner automatic initiation limit: 5
TRANSACTION PROGRAM
transaction program name (hex): 99 85 83 a5 d4 d7 f0 f4
transaction program name (ebcdic): recvMP04
transaction program execute name:
'/home/guenther/recvMP04.sh'
tp is enabled
tp supports basic conversations
tp supports mapped conversations
tp supports confirm synchronization
tp supports no synchronization
no verification is required
number of pip fields required: 0
TRANSACTION PROGRAM
transaction program name (hex): 06 f1
transaction program name (ebcdic): ?1
transaction program execute name:
'06f1'
tp is enabled
tp supports basic conversations
tp supports confirm synchronization
tp supports no synchronization
no verification is required
number of pip fields required: 0
privilege mask (hex): 82
(cnos - allocate_service_tp privileges)
TOKEN RING COMMUNICATIONS MEDIA
line name: LINE0
line number: 0
controller name: SNA
line class: leased
LOCAL LINK STATION
link station name: LYAFT1F0
pu name: IYAFT1F0
line name: LINE0
secondary station
LSAP address (in hex): 04
i-field size: 1033
Acknowledgement delay window size : 7
Acknowledgement delay timeout in tenth of seconds : 3
Retry count : 20
Retry timeout in seconds : 3
send xid block number: 0 5d
send xid id number: 3 0f 5c
send xid control vector:
REMOTE LINK STATION
link station name: LCPPG
pu name: CPPG
line name: LINE0
primary station
MAC address: 40 00 45 12 10 88
LSAP address (in hex): 04
i-field size: 1033
Remote station type : BF
send xid block number:
send xid id number:
send xid control vector:
This part of the book describes the MQSeries distributed queue management
function for MQSeries for OS/390 using native OS/390 communication protocols
(SNA LU 6.2 and TCP/IP). You can also use CICS ISC for distributed queuing.
Note: You can use distributed queuing both with CICS and without CICS
simultaneously on the same MQSeries instance, but they will have no
knowledge of each other, or of each other’s channels. It is up to you to
ensure that they have distinct sets of channel names. Most of the
information here applies equally to MQSeries for MVS/ESA.
If you are using CICS for DQM, see “Chapter 26. Monitoring and controlling
channels in OS/390 with CICS” on page 351. Most of the information here applies
equally to MQSeries for MVS/ESA.
In particular, you can use the CSQINPX initialization input data set to issue your
MQSC commands. This can be processed every time you start the channel
initiator. See the MQSeries for OS/390 System Management Guide for information
about this.
v There is a queue (SYSTEM.CHANNEL.SYNCQ) used for channel
re-synchronization purposes. You should define this with INDXTYPE(MSGID)
for performance reasons.
v Channel command queues (SYSTEM.CHANNEL.INITQ and
SYSTEM.CHANNEL.REPLY.INFO) are used to hold commands for channel
initiators, channels, and listeners, and replies from them.
v The channel control function program runs in its own address space, separate
from the queue manager, and comprises the channel initiator, listeners, MCAs,
trigger monitor, and command handler.
Note: To use the operations and control panels, you must have the correct security
authorization; see the MQSeries for OS/390 System Management Guide for
information. Figure 37 shows the panel that is displayed when you start a
panel session.
Connect to queue
manager . . . . . . : MQ25
Target queue manager : MQ25
Response wait time . : 10 seconds
Defining a channel
To define a channel using the MQSC commands, use DEFINE CHANNEL.
Using the operations and control panels, starting from the initial panel, complete
these fields and press Enter:
Field Value
Action 2 (Define)
Object type CHLtype (for example CHLSENDER) or CHANNEL
Name CHANNEL.TO.DEFINE
You are presented with some panels to complete with information about the
attributes you want for the channel you are defining. These panels are shown on
page 415.
Note: If you entered CHANNEL in the object type field, you are presented with
the Select a Valid Channel Type panel first.
If you want to define a channel with the same attributes as an existing channel,
put the name of the channel you want to copy in the Like field on the initial
panel. The subsequent panels will already contain these attribute values, but you
can change any that you want to before pressing Enter.
For information about the channel attributes, see “Chapter 6. Channel attributes”
on page 77.
Notes:
1. If you are using distributed queuing with CICS as well, don’t use any of the
same channel names.
2. You are strongly recommended to name all the channels in your network
uniquely. As shown in Table 1 on page 30, including the source and target
queue manager names in the channel name is a good way to do this.
Using the operations and control panels, starting from the initial panel, complete
these fields and press Enter:
Field Value
Action 3 (Alter)
Object type CHLtype (for example CHLSENDER) or CHANNEL
Name CHANNEL.TO.ALTER
You are presented with some panels containing information about the current
attributes of the channel. Change any of the unprotected fields that you want by
overtyping the new value, and then press Enter to change the channel definition.
For information about the channel attributes, see “Chapter 6. Channel attributes”
on page 77.
Using the operations and control panels, starting from the initial panel, complete
these fields and press Enter:
Field Value
Action 1 (Display)
Object type CHLtype (for example CHLSENDER) or CHANNEL
Name CHANNEL.TO.DISPLAY
You are presented with some panels displaying information about the current
attributes of the channel.
For information about the channel attributes, see “Chapter 6. Channel attributes”
on page 77. For information about channel status, press F11 (Connects). See
“Displaying channel status” on page 335 for information about this.
Using the operations and control panels, starting from the initial panel, complete
these fields and press Enter:
Field Value
Action 1 (Display)
Object type SYSTEM
Name Blank
You are presented with another panel. Select control type 1 on this panel.
Notes:
1. Displaying distributed queuing information may take some time if you have
lots of channels.
2. Channel status is not available for client-connection channels.
Using the operations and control panels, starting from the initial panel, complete
these fields and press Enter:
Field Value
Action 4 (Delete)
Object type CHLtype (for example CHLSENDER) or CHANNEL
Name CHANNEL.TO.DELETE
You are presented with some panels containing information about the current
attributes of the channel. If required, you can scroll through these panels to verify
that you are deleting the correct channel definition. Press Enter to delete the
channel definition; you will be asked to confirm that you want to delete the
channel definition by pressing Enter again.
Note: The channel initiator has to be running before a channel definition can be
deleted (except for client-connection channels).
For information about the channel attributes, see “Chapter 6. Channel attributes”
on page 77.
Using the operations and control panels, starting from the initial panel, complete
these fields and press Enter:
Field Value
Action 6 (Start)
Object type SYSTEM
Name Blank
Select function type, complete fields, then press Enter to start system
function.
Channel initiator
Parameter module name . . ________
JCL substitution . . . . ________________________________________________
________________________________________________
Select function type 1 (channel initiator), and press Enter. The channel initiator
parameter module name defaults to CSQXPARM. If you want to use a different
parameter module, enter the name on the panel.
Note: If you are using Interlink TCP, this must be started before you start the
channel initiator. If you are using IBM TCP, you can start the channel
initiator first but, unless you are using OE sockets, you will need to restart
the channel initiator after you have started TCP, in order to establish
communication. If you are using LU 6.2, this can be started before or after
the channel initiator.
Using the operations and control panels, starting from the initial panel, complete
these fields and press Enter:
Field Value
Action 7 (Stop)
Object type SYSTEM
Name Blank
The channel initiator will wait for all running channels to stop in quiesce mode
before it stops.
Note: If some of the channels are receiver or requester channels that are running
but not active, a stop request issued to either the receiver’s or sender’s
channel initiator will cause it to stop immediately.
However, if messages are flowing, the channel initiator waits for the current batch
of messages to complete before it stops.
Using the operations and control panels, starting from the initial panel, complete
these fields and press Enter:
Field Value
Action 6 (Start)
Object type SYSTEM
Name Blank
The Start a System Function panel is displayed (see Figure 39 on page 327).
Using the operations and control panels, starting from the initial panel, complete
these fields and press Enter:
Field Value
Action 7 (Stop)
Object type SYSTEM
Name Blank
The Stop a System Function panel is displayed (see Figure 40 on page 328).
Select control type 2 or 3 (channel listener for LU 6.2 or TCP respectively) and
press Enter.
Using the operations and control panels, starting from the initial panel, complete
these fields and press Enter:
Field Value
Action 6 (Start)
Object type CHLtype (for example CHLSENDER) or CHANNEL
Name CHANNEL.TO.USE
Start a Channel
Using the operations and control panels, starting from the initial panel, complete
these fields and press Enter:
Field Value
Action 5 (Perform)
Object type CHLSENDER, CHLSERVER, or CHANNEL
Name CHANNEL.TO.USE
Reset
Sequence number . . . . . 1 1 - 999999999
Ping
Data length . . . . . . . 16 16 - 32768
The data length is initially set to 16. Change this if you want, select function type 2
(ping), and press Enter.
Using the operations and control panels, starting from the initial panel, complete
these fields and press Enter:
Field Value
Action 5 (Perform)
Object type CHLtype (for example CHLSENDER) or CHANNEL
Name CHANNEL.TO.USE
Reset
Sequence number . . . . . 1 1 - 999999999
Ping
Data length . . . . . . . 16 16 - 32768
The sequence number field is initially set to one. Change this if you want, select
Function type 1 (reset), and press Enter.
Using the operations and control panels, starting from the initial panel, complete
these fields and press Enter:
Field Value
Action 9 (Perform)
Object type CHLSENDER, CHLSERVER, or CHANNEL
Name CHANNEL.TO.USE
Reset
Sequence number . . . . . 1 1 - 999999999
Ping
Data length . . . . . . . 16 16 - 32768
Select Function type 3 or 4 (resolve with commit or backout), and press Enter. (See
“In-doubt channels” on page 69 for more information.)
Using the operations and control panels, starting from the initial panel, complete
these fields and press Enter:
Field Value
Action 7 (Stop)
Object type CHLtype (for example CHLSENDER) or CHANNEL
Name CHANNEL.TO.USE
Stop a Channel
See “Stopping and quiescing channels (not MQSeries for Windows)” on page 67 for
more information. For information about restarting stopped channels, see
“Restarting stopped channels” on page 69.
Note: Displaying channel status information may take some time if you have lots
of channels.
Using the operations and control panels on the List Channel panel (see Figure 38
on page 323), a summary of the channel status is shown for each channel as
follows:
where nnn is the number of active connections, and status is one of the following:
INIT INITIALIZING
BIND BINDING
START STARTING
RUN RUNNING
STOP STOPPING or STOPPED
RETRY RETRYING
REQST REQUESTING
To display more information about the channel status, press the Status key (F11) on
the List Channel or the Display, Alter, or Delete channel panels to display the List
Channels - Current Status panel (see Figure 46 on page 336).
Use '/' to select one or more connections, then press Enter to display current
connection status.
Command ===>
F1=Help F2=Split F3=Exit F5=Refresh F7=Bkwd F8=Fwd
F9=Swap F10=Messages F11=Saved F12=Cancel
INIT INITIALIZING
BIND BINDING
START STARTING
RUN RUNNING
STOP STOPPING or STOPPED
RETRY RETRYING
REQST REQUESTING
DOUBT STOPPED and INDOUBT(YES)
You can press F11 to see a similar list of channel connections with saved status;
press F11 to get back to the current list.
Use a slash (/) to select a connection and press Enter. Note that the saved status
does not apply until at least one batch of messages has been transmitted on the
channel. The Display Channel Connection Current Status panels are displayed:
More: +
Status . . . . . . . . . . : RUN
Last sequence number . . . : 6
Last LUW ID . . . . . . . : F2F6F1F2F2F6F2F8
Indoubt . . . . . . . . . : NO
Current messages . . . . . : 0
Current sequence number . : 6
Current LUW ID . . . . . . : F2F6F1F3F3F9F0F1
More: -
Channel start time . . . . : 1998-08-10 14.33.26
Last message/call time . . :
Batches completed . . . . . : 0
Messages/calls . . . . . . : 0
Bytes sent . . . . . . . . : 0
Bytes received . . . . . . : 0
Transmissions sent . . . . : 0
Transmissions received . . : 0
Short retry attempts left . : 10
Long retry attempts left . : 999999999
Stop request outstanding . : N Y=Yes,N=No
Maximum message length . . : 4194304
Batch size . . . . . . . . : 50
Heartbeat interval . . . . : 300 seconds
Nonpersistent messages . . : F F=Fast,N=Normal
Using the operations and control panels, starting from the initial panel, complete
these fields and press Enter:
You are presented with a panel like figure 49, in which the information for each
cluster channel occupies three lines, and includes its channel, cluster, and queue
manager names. For cluster-sender channels, the overall state is shown.
To display full information about one or more channels, type Action code 1 against
their names and press Enter. Use Action codes 5, 6, or 7 to perform functions (such
as ping, resolve, and reset), and start or stop a cluster channel.
To display more information about the channel status, press the Status key (F11).
To enable distributed queuing, you must perform the following three tasks:
v Customize the distributed queuing facility and define the MQSeries objects
required; this is described in the MQSeries for OS/390 System Management Guide.
v Define access security; this is described in the MQSeries for OS/390 System
Management Guide.
v Set up your communications; this is described in this chapter.
Setting up communication
When a distributed-queuing management channel is started, it tries to use the
connection specified in the channel definition. For this to succeed, it is necessary
for the connection to be defined and available. This section explains how to do
this.
TCP setup
The TCP address space name must be specified in the TCP system parameters data
set, tcpip.TCPIP.DATA. In the data set, a “TCPIPJOBNAME TCPIP_proc” statement
must be included.
The channel initiator address space must have authority to read the data set. The
following techniques can be used to access your TCPIP.DATA data set, depending
on which TCP/IP product and interface you are using:
v Environment variable, RESOLVER_CONFIG
v HFS file, /etc/resolv.conf
v //SYSTCPD DD statement
v //SYSTCPDD DD statement
v jobname/userid.TCPIP.DATA
v SYS1.TCPPARMS(TCPDATA)
v zapname.TCPIP.DATA
You must also be careful to specify the high-level qualifier for TCP/IP correctly.
Connecting to TCP
The connection name (CONNAME) field in the channel definition should be set to
either the TCP network address of the target, in dotted decimal form (for example
9.20.9.30) or the host name (for example MVSHUR1). If the connection name is a
host name, a TCP name server is required to convert the host name into a TCP
host address. (This is a function of TCP, not MQSeries.)
On the initiating end of a connection (sender, requester, and server channel types)
it is possible to provide an optional port number for the connection, for example:
Connection name
9.20.9.30(1555)
In this case the initiating end will attempt to connect to a receiving program
listening on port 1555.
Receiving on TCP
Receiving channel programs are started in response to a startup request from the
sending channel. To do this, a listener program has to be started to detect incoming
network requests and start the associated channel. You start this listener program
with the START LISTENER command, or using the operations and control panels.
The default listener backlog value on OS/390 is 255. If the backlog reaches this
values, the TCP/IP connection is rejected and the channel will not be able to start.
For MCA channels, this results in the channel going into a RETRY state and
retrying the connection at a later time.
However, to avoid this error, you can add an entry in the qm.ini file:
This overrides the default maximum number of outstanding requests (255) for the
TCP/IP listener.
Note: Some operating systems support a larger value than the default. If necessary,
this can be used to avoid reaching the connection limit.
To run the listener with the backlog option switched on, use the RUNMQLSR -B
command. For information about the RUNMQLSR command, see the MQSeries System
Administration book.
APPC/MVS setup
Each instance of the channel initiator must have the name of the LU that it is to
use defined to APPC/MVS, in the APPCPMxx member of SYS1.PARMLIB, as in
the following example:
LUADD ACBNAME(luname) NOSCHED TPDATA(CSQ.APPCTP)
luname is the name of the logical unit to be used. NOSCHED is required; TPDATA is not
used. No additions are necessary to the ASCHPMxx member, or to the APPC/MVS
TP profile data set.
The side information data set must be extended to define the connections used by
DQM. See the supplied sample CSQ4SIDE for details of how to do this using the
APPC utility program ATBSDFMU. For details of the TPNAME values to use, see
the Multiplatform APPC Configuration Guide (“Red Book”) and the following table
for information:
Table 30. Settings on the local OS/390 system for a remote queue manager platform
Remote platform TPNAME
OS/390 or The same as TPNAME in the corresponding side information on the
MVS/ESA remote queue manager.
OS/390 or CKRC (sender) CKSV (requester) CKRC (server)
MVS/ESA using
CICS
OS/400 The same as the compare value in the routing entry on the OS/400
system.
OS/2 As specified in the OS/2 Run Listener command, or defaulted from the
OS/2 queue manager configuration file.
Digital OVMS As specified in the Digital OVMS Run Listener command.
Tandem NSK The same as the TPNAME specified in the receiver-channel definition.
Other UNIX The same as TPNAME in the corresponding side information on the
systems remote queue manager.
Windows NT As specified in the Windows NT Run Listener command, or the
invokable Transaction Program that was defined using TpSetup on
Windows NT.
If you have more than one queue manager on the same machine, ensure that the
TPnames in the channel definitions are unique.
See the Multiplatform APPC Configuration Guide also for information about the
VTAM definitions that may be required.
The OS/390 command VARY ACTIVE must be issued against both base and
listener LUs before attempting to start either inbound or outbound
communications.
Receiving on LU 6.2
Receiving MCAs are started in response to a startup request from the sending
channel. To do this, a listener program has to be started to detect incoming
network requests and start the associated channel. The listener program is an
APPC/MVS server. You start it with the START LISTENER command, or using the
operations and control panels. You must specify the LU name to use by means of a
symbolic destination name defined in the side information data set. The local LU
so identified must be the same as that used for outbound transmissions, as set in
the channel initiator parameters.
See the MQSeries for OS/390 System Management Guide for information about these
tasks.
For example:
DEFINE QLOCAL(MYXMITQ) USAGE(XMITQ) TRIGGER(YES) +
INITQ(SYSTEM.CHANNEL.INITQ) PROCESS(MYPROCESS)
DEFINE PROCESS(MYPROCESS) APPLTYPE(MVS) APPLICID('CSQX START') +
USERDATA(MYCHANNEL)
DEFINE CHL(MYCHANNEL) CHLTYPE(SDR) TRTYPE(TCP) +
XMITQ(MYXMITQ) CONNAME('9.20.9.30(1555)')
Note: The trigger monitor program is actually the channel initiator itself; no
separate program needs to be started.
Synchronization queue
DQM requires a queue for use with sequence numbers and logical units of work
identifiers (LUWID). You must ensure that a queue is available with the name
SYSTEM.CHANNEL.SYNCQ (see the MQSeries for OS/390 System Management
Guide).
Make sure that you define this queue using INDXTYPE(MSGID). This will improve
the speed at which it can be accessed.
To use ARM, you must set up your queue managers and channel initiators in a
particular way to make them restart automatically. For information about this, see
the MQSeries for OS/390 System Management Guide.
The example illustrates the use of both TCP/IP and LU 6.2 connections. The
example assumes that channels are to be triggered to start when the first message
arrives on the transmission queue they are servicing.
Payroll Query
Payroll
query Queue remote 'PAYROLL.QUERY' processing
message
Channel
Query
Queue transmission 'QM2' QM1.TO.QM2 Queue local 'PAYROLL'
message
Reply
'SYSTEM.CHANNEL.INITQ' Queue transmission 'QM1'
message
Reply
Queue local 'PAYROLL.REPLY' QM2.TO.QM1 'SYSTEM.CHANNEL.INITQ'
message
Figure 50. The message channel example for MQSeries for OS/390
The payroll query application puts a query message to the remote queue
“PAYROLL.QUERY” defined on QM1. This remote queue definition resolves to the
local queue “PAYROLL” on QM2. In addition, the payroll query application
specifies that the reply to the query is sent to the local queue “PAYROLL.REPLY”
on QM1. The payroll processing application gets messages from the local queue
The connection details are supplied in the CONNAME attribute of the sender
channel definitions.
All the object definitions have been provided with the DESCR and REPLACE
attributes. The other attributes supplied are the minimum required to make the
example work. The attributes that are not supplied take the default values for
queue manager QM1.
Note: The remote queue definition is not a physical queue, but a means of
directing messages to the transmission queue, QM2, so that they can be sent
to queue manager QM2.
When the first message is put on this transmission queue, a trigger message is sent
to the initiation queue, SYSTEM.CHANNEL.INITQ. The channel initiator gets the
message from the initiation queue and starts the channel identified in the named
process. The channel initiator can only get trigger messages from the
SYSTEM.CHANNEL.INITQ queue, so you should not use any other queue as the
initiation queue.
Process definition
DEFINE PROCESS(QM1.TO.QM2.PROCESS) DESCR('Process for starting channel') +
REPLACE APPLTYPE(MVS) APPLICID('CSQX START') USERDATA(QM1.TO.QM2)
The channel initiator uses this process information to start channel QM1.TO.QM2.
You do not need to provide a remote queue definition to enable the replies to be
returned to QM1. The message descriptor of the message retrieved from local
queue PAYROLL contains both the reply-to queue and the reply-to queue manager
All the object definitions have been provided with the DESCR and REPLACE
attributes and are the minimum required to make the example work. The attributes
that are not supplied take the default values for queue manager QM2.
When the first message is put on this transmission queue, a trigger message is sent
to the initiation queue, SYSTEM.CHANNEL.INITQ. The channel initiator gets the
message from the initiation queue and starts the channel identified in the named
process. The channel initiator can only get trigger messages from
SYSTEM.CHANNEL.INITQ so you should not use any other queue as the
initiation queue.
Process definition
DEFINE PROCESS(QM2.TO.QM1.PROCESS) DESCR('Process for starting channel') +
REPLACE APPLTYPE(MVS) APPLICID('CSQX START') USERDATA(QM2.TO.QM1)
The channel initiator uses this process information to start channel QM2.TO.QM1.
The applications can then send messages to each other. Because the channels are
triggered to start by the arrival of the first message on each transmission queue,
you do not need to issue the START CHANNEL MQSC command.
For details about starting a channel initiator see “Starting a channel initiator” on
page 327, and for details about starting a listener see “Starting a channel listener”
on page 329.
The channel control function consists of CICS panels and programs, a sequence
number queue, a channel command queue, and a VSAM file for the channel
definitions. The following is a brief description of the components of the channel
control function.
v The channel definition file (CDF):
– Is a VSAM file
– Is indexed on channel name
– Holds channel definitions
– Must be available to the CICS regions in which the channel control program
runs, and where the message channel agent (MCA) programs run
v You use channel definition panels to:
– Create, copy, display, alter, find, and delete channel definitions
– Start channels, reset channel sequence numbers, stop channels, ping channels,
resync channels, and resolve in-doubt messages when links cannot be
re-established
– Display status information about channels
CICS regions
Figure 51 shows a configuration of two CICS regions, connected to a single queue
manager. The regions have multiregion operation (MRO) links to one another, for
function shipping of EXEC CICS START commands from the channel control
program.
R e m o te
s y s te m
queue
m anager
C o m m u n ic a tio n
link. LU 6.2
CICS-B CICS-C
C h a n n el
M essage C h a n n el d e fin itio n
channel c o n tr o l f i le
agent C IC S/M R O program
program C o n n e ctio n
Q ueue t r a n s m is s io n
Figure 51. Sample configuration of channel control and MCA. MRO is used for an EXEC
CICS START of the MCA, and for an EXEC CICS READ of the channel definition file by the
MCA. Communication with the remote queue manager is through CICS ISC, not MRO.
Keyboard functions
The following sections describe the function, Enter, and Clear keys, as well as what
happens if you press any unassigned keys associated with this panel.
Function keys
The function keys control the use of the panel. They are listed below, together with
their purpose.
Note: Function keys 13 to 24 have the same functions as functions keys 1 to 12,
respectively.
Chapter 26. Monitoring and controlling channels in OS/390 with CICS 353
Message Channel List panel
Enter key
Pressing the Enter key while the cursor is on a menu-bar choice results in the
pull-down menu for that choice appearing.
Pressing the Enter key while the cursor is not on a menu-bar choice and a channel
selection has been made selects the default option, Display Settings.
Pressing the Enter key while the cursor is not on a menu-bar choice and no
channel selection has been made results in the panel being redisplayed.
Clear key
If you find while typing that what you have typed is not correct, press the Clear
key on your terminal to revert all the input fields to their previous state.
For individual fields, use the ‘Erase EOF’, or ‘Ctrl Delete’, depending upon the
type of terminal you are using.
Selecting a channel
To select a channel, begin at the Message Channel List panel:
1. Move the cursor to the left of the required channel name.
2. Type a slash (/) character.
3. Press F10 to move the cursor to the menu bar, or press the Enter key to browse
the channel settings.
If you try to select more than one channel, only the first one you select is valid.
Selecting each of these choices causes its pull-down menu to be displayed (see
Figure 53 on page 355).
When you select an option that requires further information, such as a channel
name, an action window appears with an entry field for the data.
In general, any incorrect input from the keyboard results in a warning message
being issued.
Chapter 26. Monitoring and controlling channels in OS/390 with CICS 355
Message Channel List panel
Creating a channel
To create a new channel, begin at the Message Channel List panel:
1. Press function key F10 and move the cursor to the Edit choice on the menu bar.
2. Press the Enter key to display the Edit pull-down menu, and select the Create
option.
3. Press the Enter key to display the Create action window.
4. Type the name of the channel in the field provided.
5. Select the channel type for this end of the link.
6. Press the Enter key.
Notes:
1. If you are using distributed queuing without CICS as well, don’t use any of the
same channel names.
2. You are recommended to name all the channels in your network uniquely. As
shown in Table 1 on page 30, including the source and target queue manager
names in the channel name is a good way to do this.
You are presented with the appropriate Settings panel for the type of channel you
have chosen. Fill in the fields with the information you have gathered previously,
and select the Save option from the Channel pull-down menu.
You are provided with help in deciding on the content of the various fields in the
descriptions of the channel definition panels in the following sections of this
chapter.
Altering a channel
To alter an existing channel, begin at the Message Channel List panel:
1. Select a channel.
2. Press function key F10 and move the cursor to the Edit choice on the menu bar.
3. Press the Enter key to display the Edit pull-down menu, and select the Alter
option.
You are presented with the appropriate Settings panel for the channel you have
chosen. Alter the fields with the information you have gathered previously, and
select the Save option from the Channel pull-down menu.
You are provided with help in deciding on the content of the various fields in the
descriptions of the channel definition panels in the following sections of this
chapter, and in the contextual help panels.
Browsing a channel
To browse the settings of a channel, begin at the Message Channel List panel:
1. Select a channel.
2. Press the Enter key.
If you try to select more than one channel, only the first one you select is valid.
This results in the respective Settings panel being displayed with details of the
current settings for the channel, but with the fields protected against user input.
Channel Help
+------------------+----------------------------------------------------------
| 1. *ave |13.2.VC14.SENDER - Settings VICY14
| 2. Exit F3 |
+------------------+
More: +
Channel type . . . . . . : SENDER
Target system id . . . . :
Transmission queue name . : JACK
Batch size . . . . . . . : 0001
Sequence number wrap . . : 0999999
Renaming a channel
To rename a message channel, begin at the Message Channel List panel:
1. Ensure that the channel is inactive.
2. Select the channel.
3. Use Copy to create a duplicate with the new name.
4. Use Delete to delete the original channel.
If you decide to rename a message channel, ensure that both ends of the channel
are renamed at the same time.
Start
The Start option is available for sender and requester channels, and moreover
should not be necessary where a sender channel has been set up with queue
manager triggering. For the method of setting up triggering, see “How to trigger
channels” on page 358.
Chapter 26. Monitoring and controlling channels in OS/390 with CICS 357
Message Channel List panel
When a server channel has been fully defined as a sender, then the same applies as
for sender channels.
When you choose the Start option, an EXEC CICS START call is issued to the
MCA, which reads the channel definition file and opens the transmission queue. A
channel startup sequence is executed which remotely starts the corresponding
MCA of the receiver or server channel. When they are running, the sender and
server processes await messages arriving on the transmission queue and transmit
them as they arrive.
A message is returned to the panel confirming that the request to start a channel
has been accepted. For confirmation that the start command has succeeded, check
the system console for the CICS system hosting the MCA, or the transient data
queue.
The sender, server, and requester channel transactions can be started automatically
by CICS, if necessary. This is achieved by arranging for the MCA CICS transaction
to be started by the CICS system in the required way. This is similar to the
triggering startup in that the MCA is passed the required information in a trigger
message. For example, it can be customized to start at a certain time every day, or
at regular intervals. When started, it retrieves its channel definition and responds
accordingly.
DEFINE QLOCAL(MYINITQ)
Following the definitions, the long-running trigger process, CKTI, must be started
to monitor the initiation queue:
CKQC STARTCKTI MYINITQ
CKTI waits for trigger messages from the initiation queue, and starts an instance of
CKSG for the sender channel in response to the trigger messages. If the channel
experiences problems, the trigger control parameter on the transmission queue
definition is set to NOTRIGGER by the MCA, and the transmission queue is set to
GET(DISABLED). After diagnosis and correction and before you can restart
triggering, you must reset the TRIGGER parameter, for example with the MQSeries
for OS/390 operations and control panels, and must reset the transmission queue
to GET(ENABLED).
Stop
Use the Stop option to request the channel to stop activity.
The Stop option presents an action window to allow you to confirm your intention
to stop the channel, for all four types of channel. For sender and server channels
only, you can select the type of stop you require: IMMEDIATE, or QUIESCE. See
Figure 55 on page 360 and Figure 56 on page 361.
Chapter 26. Monitoring and controlling channels in OS/390 with CICS 359
Message Channel List panel
Stop immediate: This choice forces the channel to close down immediately, if
necessary, without completing the current batch of messages, but an attempt is
made to syncpoint with the other end of the channel.
For more information, see the “Stopping and quiescing channels (not MQSeries for
Windows)” on page 67.
Stop quiesce: This choice requests the channel to close down in an orderly way;
the current batch of messages is completed, and the syncpoint procedure is carried
out with the other end of the channel.
For more information, see “Stopping and quiescing channels (not MQSeries for
Windows)” on page 67. For information about restarting stopped channels, see
“Restarting stopped channels” on page 69.
Resync
A message channel is synchronized when there are no in-doubt messages. That is,
the sending channel and the receiving channel are agreed on the current unit of
work number. The Resync option is valid for sender and server channels, but
server channels must be fully defined. The option allows the operator to request
the channel to re-synchronize with the remote end by resolving any in-doubt
messages.
It is to be used only where the channel is currently inactive and in-doubt messages
exist. The channel starts up, resolves the in-doubt messages, and then terminates. It
is not intended that the channel should send messages after the resolution has
been completed.
Chapter 26. Monitoring and controlling channels in OS/390 with CICS 361
Message Channel List panel
If a channel terminates abnormally, the sender may be left in doubt as to whether
the receiver has received and committed one message, or a batch of messages.
When the channel is restarted, the channel program automatically re-synchronizes
before sending any new messages.
However, there are times when you may want to re-synchronize the in-doubt
messages, but not send any new ones. For example:
v You may want to reset sequence numbers before sending the next batch of
messages.
v You may want to close out a batch, but hold the remaining messages for later
transmission.
The channel program started by this option establishes a session with a partner. It
then exchanges the re-synchronization flows. Then, instead of starting new
message traffic, it sends a disconnect flow. The result is that the channel terminates
normally, without any in-doubt messages. It is ready to be restarted or reset, as
required.
Reset
Use the Reset option to request the channel to reset the sequence number. For a
view of the Reset Channel Sequence Number action window, see Figure 57 on
page 363. The change must be made separately on each end of the link, with care,
and can be done only on inactive channels that have no in-doubt units of work
outstanding.
The current sequence number is retrieved and changed to the value requested by
the user.
Resolve
Use the Resolve option to request a channel to commit or back out in-doubt
messages. This may be used when the other end of the link has terminated, and
there is no prospect of it returning. Any outstanding units of work need to be
resolved with either backout or commit. Backout restores messages to the
transmission queue, while Commit discards them.
The Resolve option is needed when the Resync option is not available, or not
effective, and messages are held in doubt by a sender or server. The option accepts
one of two parameters: Backout or Commit. See Figure 58 on page 364.
The channel program does not try to establish a session with a partner. Instead, it
determines the logical unit of work identifier (LUWID) which represents the
in-doubt messages. It then issues, as requested, either:
v Backout to restore the messages to the transmission queue; or
v Commit to delete the messages from the transmission queue
Chapter 26. Monitoring and controlling channels in OS/390 with CICS 363
Message Channel List panel
Display status
Use the Display Status option to display the current status of the channel. The
following information is displayed:
v Whether the channel is active or inactive
v The in-doubt status of sender and server channels
v The sequence number last sent, if sequence numbering is in effect
v The last LUWID number, if available. Available means:
– Always available for receiver and requester channels
– Available for sender and server channels when:
- Sequence numbering is in effect
- No sequence numbering in effect, but the channel is in doubt
That is, the LUWID number is not available for sender and server channels
when sequence numbering is not in effect and the channel is not in doubt
For an example of sender and server status panels, see Figure 59 on page 365, and
for an example of receiver and requester status panels, see Figure 60 on page 365.
Otherwise, if a ‘Not available’ status is shown in any of the fields, this indicates
that an error has occurred, and you should refer to the console log to find the error
messages associated with this problem.
Figure 59. An example of a sender channel Display Channel Status window. The server
channel Display Channel Status panel looks the same, except that the Channel type field is
changed to SERVER.
Figure 60. An example of a receiver channel Display Channel Status window. The requester
channel Display Channel Status window looks the same, except that the Channel type field
is changed to REQUESTER.
Display settings
Use the Display Settings option to display the current definitions for the channel.
This choice displays the appropriate panel for the type of channel with the fields
displaying the current values of the parameters, and protected against user input:
v Sender: see Figure 71 on page 376
v Receiver: see Figure 73 on page 377
Chapter 26. Monitoring and controlling channels in OS/390 with CICS 365
Message Channel List panel
v Server: see Figure 75 on page 378
v Requester: see Figure 77 on page 379
Protected input is shown with colon characters (:) at the end of field descriptions,
and the Save option is not available on the Channel pull-down menu.
You can select this choice from the Message Channel List panel by choosing a
channel and pressing Enter, without using the menu bar, ensuring that the cursor
is not on the menu bar.
Ping
Use the Ping option to exchange a data message with the remote end. This gives
you some confidence that the link is available and functioning. It can be issued
from sender and server channels only, but server channels must be fully defined.
Ping does not involve the use of transmission queues and target queues. It uses
channel definitions, the related CICS communication link, the network setup, and
the queue managers at both ends.
The corresponding channel is started at the far side of the link, and performs the
startup parameter negotiation.
The result of the message exchange is presented in the Ping panel for you, and this
is the returned message text, together with the time the message was sent, and the
time the reply was received.
Exit
Use the Exit option to exit the current function: channel settings, help, or message
channel list.
Channel Help
+------------------+----------------------------------------------------------
| 1. Save |13.2.VC14.SENDER - Settings VICY14
| 2. Exit F3 |
+---------- +--------------------------------------------------+
| VC13.2.VC14.SENDER - Exit | More: +
Channel typ | |
| Channel type . . . : SENDER |
Target syst | |
Transmissio | The updated channel definition has |
Batch size | not been saved. |
Sequence nu | |
Max message | 2 1. Save and exit. |
Max transmi | 2. Exit without saving. |
Disconnect | |
Transaction | F1=Help F12=Cancel |
Connection +--------------------------------------------------+
CICS profile name . . . . .
In any of the action windows and settings panels associated with Edit, you can
type the channel name in uppercase or lowercase, but it may be converted to
uppercase when you press the Enter key, depending upon your Typeterm
definition.
Copy
Use the Copy option to copy an existing channel. The Copy action window (see
Figure 63 on page 368) enables you to define the new channel name. You can use
the characters shown in “Create” on page 368 in the name.
Press the Enter key on the Copy action window to display the channel settings
panel with details of current system values. You can change any of the new
channel settings. You save the new channel definition by selecting Channel from
the menu bar, and selecting the Save option from the pull-down menu.
Chapter 26. Monitoring and controlling channels in OS/390 with CICS 367
Message Channel List panel
Create
Use the Create option to create a new channel definition from a screen of fields
filled with default values supplied by MQSeries for OS/390. Figure 64 on page 369
shows you where to type the name of the channel, and how to select the type of
channel you are creating.
When you press the Enter key, the appropriate channel settings panel is displayed.
Type information in all the necessary fields in this panel and then save the
definition by selecting Channel from the menu bar, and selecting the Save option
from the pull-down menu.
The channel name must be the same at both ends of the channel, and unique
within the network. You can use the following characters in the name:
Uppercase A-Z
Lowercase a-z
Numerics 0-9
Period ’.’
Forward slash ’/’
Underscore ’_’
Percentage sign ’%’
All panels have default values supplied for some fields. You can change the values
when you are creating or copying channels. For examples of the channel definition
panels showing the default values, see Figure 65.
Press the Enter key on the Create action window to display the channel settings
panel with details of default values.
You can create your own set of channel default values by setting up dummy
channels with the required defaults for each channel type, and copying them each
time you want to create new channel definitions.
Channel Help
------------------------------------------------------------------------------
MCATTB1 TEST.CHANNEL - Settings VICY13
More: +
Channel type . . . . . . . SENDER
Figure 65. Example of default values during Create for a channel. The values supplied
cannot be customized.
Chapter 26. Monitoring and controlling channels in OS/390 with CICS 369
Message Channel List panel
Alter
Use the Alter option to change an existing channel definition, except for the
channel name. Simply type over the fields to be changed in the channel definition
panel, and then save the updated definition by selecting Channel from the menu
bar, and selecting the Save option from the pull-down menu.
Delete
Use the Delete option to delete the selected channel. For the secondary window
requesting confirmation of your intention, see Figure 66.
Find
Use the Find option to locate a particular channel name from the list of available
channels. If the name of the channel you want is found, it is placed at the top of
the list on the Message Channel List panel. The Find a Channel action window is
shown in Figure 67.
You can partially define the channel name using a terminating asterisk, for
example, channel.lon*. This results in the first channel name to be found with these
initial letters being placed at the top of the list.
Chapter 26. Monitoring and controlling channels in OS/390 with CICS 371
Message Channel List panel
Help menu-bar choice
The Help pull-down menu is shown in Figure 69.
The work area of the panels is used to present the fields of attributes or settings
for the channel.
Note: Default values supplied by MQSeries for OS/390 are presented in some
fields. The defaults cannot be changed, but the values presented can be
changed.
v For existing channels, type over the data presented in the fields with new data.
Then select Channel from the menu bar, and select the Save option from the
pull-down menu.
Saving changes
If there are no errors, selecting the Save option from the Channel pull-down menu
saves any changes you have made to channel definitions. You are returned to the
Message Channel List panel.
If there are errors, you are returned to the Settings panel with an error message,
and all fields containing errors are highlighted. The cursor is positioned on the first
field in error. The changes are not saved.
Selecting the Exit option from the Channel pull-down menu, or pressing F3 or F12,
returns you to the Message Channel List panel.
However, if you have not saved the changes you made, a secondary window
requesting confirmation of your intention to exit without saving the data is
presented; see Figure 62 on page 367. If you want to save the changes you have
made, select Save and exit. If you have had second thoughts about the changes
you have made, select Exit without saving.
Channel Help
--------------+---------------------+-----------------------------------
MCATTB1 | _ 1. Using help | - Settings CICS01
| 2. General help |
| 3. Keys help |
| 4. Tutorial |
Channel type | 5. Product Info |
Transmission q| |___________________________________
Batch size . +---------------------+
Chapter 26. Monitoring and controlling channels in OS/390 with CICS 373
Channel settings panel fields
A “U” signifies that the field is available for use with the indicated type of
channel, while an “O” means that these fields are only needed for server channels
when they are to be used as sender channels.
Table 34. Channel attribute fields per channel type
Attribute field Sender Server Receiver Requester
Batch size U U U U
CICS profile name U O U
Connection name U O U
Disconnect interval U U
LU62 TP name (see Note) U O U
Maximum message size U U U U
Maximum transmission size U U U U
Message exit U U U U
PUT authority U U
Retry count U O U
Retry fast interval U O U
Retry slow interval U O U
Receive exit U U U U
Sequence number wrap U U U U
Sequential delivery U U U U
Security exit U U U U
Send exit U U U U
Target system identifier U U U U
Transmission queue name U U
Transaction identifier U O U
Note: See also the Multiplatform APPC Configuration Guide (“Red Book”) and Table 35 for
information.
Table 35. Settings for LU 6.2 TP name on the local OS/390 system for a remote queue
manager platform
Remote platform Sender/server Requester
OS/390 using CKRC CKSV1
CICS
OS/390 without As specified in the side As specified in the side
CICS and UNIX information on remote queue information on remote queue
systems manager system manager system
OS/2 As specified in the OS/2 Run As specified in the OS/2 Run
Listener command, or defaulted Listener command, or defaulted
from the OS/2 queue manager from the OS/2 queue manager
configuration file configuration file
If you have more than one queue manager on the same machine, ensure that the
TPnames in the channel definitions are unique. To modify a TPname, use
CSQ4SIDE or CKMC.
Chapter 26. Monitoring and controlling channels in OS/390 with CICS 375
Channel settings panel fields
Details of sender channel settings panel
This section provides details of the sender channel settings panel, as shown in
Figures 71 and 72.
Channel Help
------------------------------------------------------------------------------
MCATTB1 HURSLEY.TO.SYDNEY - Settings VICY14
More: +
Channel type . . . . . . : SENDER
Target system id . . . . :
Transmission queue name . : TX1
Batch size . . . . . . . : 0001
Sequence number wrap . . : 0999999
Max message size . . . . : 0032000
Max transmission . . . . : 32000
Disconnect interval . . . : 0001
Transaction id . . . . . : CKSG
Connection name . . . . . : HtoH
CICS profile name . . . . :
LU 6.2 TP name . . . . . : CKRC
Channel Help
------------------------------------------------------------------------------
MCATTC1 HURSLEY.TO.SYDNEY - Settings VICY14
More: -
Channel type . . . . . . : SENDER
Retry
Count . . . . . . . . . : 005
Fast interval . . . . . : 005
Slow interval . . . . . : 030
Exit routines
Security . . . . . . . :
Message . . . . . . . . :
Send . . . . . . . . . :
Receive . . . . . . . :
Channel Help
------------------------------------------------------------------------------
MCATTB3 VICY13.TO.VICY14 - Settings VICY14
More: +
Channel type . . . . . . : RECEIVER
Target system id . . . . :
Channel Help
------------------------------------------------------------------------------
MCATTC3 VICY13.TO.VICY14 - Settings VICY14
Exit routines
Security . . . . . . . :
Message . . . . . . . . :
Send . . . . . . . . . :
Receive . . . . . . . . :
Chapter 26. Monitoring and controlling channels in OS/390 with CICS 377
Channel settings panel fields
Details of server channel settings panel
This section provides details of the server channel settings panels, as shown in
Figures 75 and 76.
Channel Help
------------------------------------------------------------------------------
MCATTB1 HURSLEY.TO.SYDNEY - Settings VICY14
More: +
Channel type . . . . . . : SERVER
Target system id . . . . :
Transmission queue name . : TX1
Batch size . . . . . . . : 0001
Sequence number wrap . . : 0999999
Max message size . . . . : 0032000
Max transmission . . . . : 32000
Disconnect interval . . . : 0001
Transaction id . . . . . :
Connection name . . . . . :
CICS profile name . . . . :
LU 6.2 TP name . . . . . :
Channel Help
------------------------------------------------------------------------------
MCATTC1 HURSLEY.TO.SYDNEY - Settings VICY14
More: -
Channel type . . . . . . : SERVER
Retry
Count . . . . . . . . . : 005
Fast interval . . . . . : 005
Slow interval . . . . . : 030
Exit routines
Security . . . . . . . :
Message . . . . . . . . :
Send . . . . . . . . . :
Receive . . . . . . . :
Channel Help
------------------------------------------------------------------------------
MCATTB4 VICY13.TO.VICY14.CB - Settings VICY14
More: +
Channel type . . . . . . : REQUESTER
Target system id . . . . :
Transaction id . . . . . : CKRQ
Connection name . . . . . : VC13
CICS profile name . . . . : LU6PROF
LU 6.2 TP name . . . . . : CKSV
Channel Help
------------------------------------------------------------------------------
MCATTC4 VICY13.TO.VICY14.CB - Settings VICY14
More: -
Channel type . . . . . . : REQUESTER
Retry
Count . . . . . . . . . : 005
Fast interval . . . . . : 005
Slow interval . . . . . : 030
Exit routines
Security . . . . . . . :
Message . . . . . . . . :
Send . . . . . . . . . :
Receive . . . . . . . . :
Chapter 26. Monitoring and controlling channels in OS/390 with CICS 379
Channel settings panel fields
To enable distributed queuing, you must perform the following three tasks:
v Customize the distributed queuing facility and define the MQSeries objects
required; this is described in the MQSeries for OS/390 System Management Guide.
v Define access security; this is described in the MQSeries for OS/390 System
Management Guide.
v Set up your communications; this is described in this chapter.
When a channel is started, it tries to use the CICS connection specified in the
channel definition. For this to succeed, it is necessary for the CICS connection to be
defined and available. This section explains how to do this.
If more than one CICS system is associated with any one MQSeries for OS/390,
and each CICS system is running some DQM functions, you need to define
connections between the CICS systems. This chapter also explains how to do this.
One OS/390 system can be host to a number of CICS systems at the same time,
and each CICS system is able to connect to one queue manager at any one time.
You provide communication links so that queue managers may use these links,
through CICS intersystem communication (ISC) to reach other queue managers on
OS/390 systems (using CICS or not), and on other non-OS/390 systems, provided
they are using the standard queue manager intercommunication protocol,
MQSeries Message Channel Protocol.
Note: CICS for MVS/ESA Version 4 Release 1.0 or higher is required for MQSeries
distributed queue management.
Intersystem communication
The connection type must be ISC LU 6.2, but can be defined as one of the
following:
v LU 6.2 single-session terminal
v LU 6.2 single-session connection
v LU 6.2 parallel-session connection
Before deciding the type of connection to be defined, you should consider the
following points:
v The number of channels to be defined between the two systems
v The maximum number of channels that are to be active at any one time
v How often the connection is used
v The number of channels per transmission queue
v The number of channels that can be active per connection
To define an LU 6.2 link between the two CICS systems, you should refer to the
following books:
v CICS Intercommunication Guide, SC33-1695.
v CICS Resource Definition Guide, SC33-1684.
paying particular attention to the sections discussing communication resources.
Only one ISC connection can be active between any two CICS systems at the same
time. However, a single CICS system can have connections to multiple remote
CICS systems at the same time.
The sender and requester channel definitions require the provision of the LU 6.2
connection name and, optionally, the CICS profile name to be used.
PROFILE=MYPROF
modename=CICSISC0
SESSION=SES1
connection=CON1
modename=CICSISC0
CONNECTION=CON1
net name=luname
If no CICS profile name is specified in the channel definition, DQM does not
specify a profile when allocating a session.
If you want to install these connections as part of the CICS initialization process,
you can add the group that contains the connection definitions to the CICS startup
list that is specified in the GRPLIST= parameter. You then need to cold start your
CICS system for the entries to become effective.
Chapter 27. Preparing MQSeries for OS/390 when using CICS 383
Defining DQM requirements
See the MQSeries for OS/390 System Management Guide for information about these
tasks.
You define:
v A local queue with the usage of (XMITQ) for each sending message channel.
v Remote queue definitions.
A remote queue object has three distinct uses, depending upon the way the
name and content are specified:
– Remote queue definition
– Queue manager alias definition
– Reply-to queue alias definition
You may start more than one channel to serve a transmission queue to increase
message throughput, but when doing so, ensure that the queue has a SHARE
attribute, and that there is not a need for sequential delivery of messages.
This mechanism works well unless the operator wishes to terminate a channel
before the disconnect time interval expires. This can occur in the following
situations:
v System quiesce
v Resource conservation
v Unilateral action at one end of a channel
In these cases it is necessary to stop the channel using the STOP option from the
Message Channel List panel of the CKMC transaction. For information about what
happens when a channel is stopped in this way, and how to restart the channel,
see “Stopping and quiescing channels (not MQSeries for Windows)” on page 67.
Chapter 27. Preparing MQSeries for OS/390 when using CICS 385
DQM in MQSeries for OS/390
Figure 80 illustrates the interaction between all the system components used for
transferring messages between queue managers.
Trigger
monitor
Figure 80. Connecting two queue managers in MQSeries for OS/390 using CICS
In the following list, the numbered items refer to the boxed index numbers in the
figure.
1. The “Payroll reporter” application connects to queue manager “QM1”, opens
a queue called “Payrollr”, and places messages on the queue.
2. The attributes of Payrollr in queue manager QM1 are:
QUEUE Payrollr
TYPE QREMOTE
DESCR PAYROLL QUEUE ON QM2 QUEUE MANAGER
PUT ENABLED
DEFPRTY 0
DEFPSIST YES
RNAME QM1_payroll
RQMNAME QM2
From this information, the local queue manager QM1 determines that
messages for this queue have to be transmitted to a remote queue manager
QM2.
QUEUE QM2
TYPE LOCAL
DESCR QUEUE MANAGER QM2 TRANSMISSION QUEUE
PUT ENABLED
DEFPRTY 0
DEFPSIST YES
OPPROCS 0
IPPROCS 0
CURDEPTH 0
MAXDEPTH 100000
PROCESS QM2.PROCESS
TRIGGER
MAXMSGL 4194304
BOTHRESH 0
BOQNAME
STGCLASS DEFAULT
INITQ Init_queue
USAGE XMITQ
SHARE
DEFSOPT EXCL
MSGDLVSQ FIFO
RETINTVL 0
TRIGTYPE FIRST
TRIGDPTH 1
TRIGMPRI 0
TRIGGERDATA 0
DEFTYPE PREDEFINED
NOHARDENBO
GET ENABLED
Messages that the application puts to Payrollr are actually placed on the
transmission queue QM2.
4. In this example, assume that the payroll message is the first message to be
placed on the empty transmission queue, and because of the triggering
attributes of the transmission queue, the queue manager determines that a
trigger message is to be issued.
The transmission queue definition refers to an initiation queue called
Init_queue, and the queue manager places a trigger message on this queue.
The transmission queue definition also refers to the trigger process definition,
and information from this definition is included in the trigger message.
PROCESS QM2.PROCESS
DESCR PROCESS DEFINITION - TO TRIGGER CHANNEL
QM1.2.QM2.CHANNEL
APPLTYPE CICS
APPLICID CKSG
USERDATA QM1.2.QM2.CHANNEL
ENVRDATA environment information
The result of this trigger processing is that a trigger message is placed on the
initiation queue, Init_queue.
5. If you experience trigger messages failing to appear when expected, refer to
the MQSeries Application Programming Guide.
6. The CKTI transaction is a long-running task that monitors the initiation queue,
Init_queue. CKTI processes the trigger message, an MQTM structure, to find
that it must start CKSG. CKSG is the CICS name of the sender channel MCA
transaction.
7. CKTI starts CKSG, passing the MQTM structure. The CKSG transaction starts
processing, receives the MQTM structure, and extracts the name of the
channel.
8. The channel name is used by CKSG to get the channel definition from the
channel definition file on QM1. The DQM display settings panel of the
channel in QM1.2.QM2.CHANNEL, is:
Channel Help
------------------------------------------------------------------------------
MCATTB1 QM1.2.QM2.CHANNEL - Settings CICSTQM2
More: +
Channel type . . . . . . : SENDER
Target system id . . . . :
Transmission queue name . : QM2
Batch size . . . . . . . : 0100
Sequence number wrap . . : 9999999
Max message size . . . . : 0031000
Max transmission . . . . : 32000
Disconnect interval . . . : 0015
Transaction id . . . . . : CKSG
Connection name . . . . . : QM2C
CICS profile name . . . . :
LU 6.2 TP name . . . . . : CKRC
Chapter 28. Message channel planning example for OS/390 using CICS 389
Planning example for OS/390 using CICS
Channel Help
------------------------------------------------------------------------------
MCATTC1 QM1.2.QM2.CHANNEL - Settings CICSTQM2
More: -
Channel type . . . . . . : SENDER
Retry
Count . . . . . . . . . : 005
Fast interval . . . . . : 005
Slow interval . . . . . : 030
Exit routines
Security . . . . . . . :
Message . . . . . . . . :
Send . . . . . . . . . :
Receive . . . . . . . :
The channel definition shows that CKSG must allocate a session on the CICS
QM2C connection and invoke the CKRC transaction at the destination CICS
system.
9. The QM2C connection definition provides a communications link to the CICS
system at the remote installation. The definition is as follows:
OBJECT CHARACTERISTICS
CEDA View
Connection : QM2C
Group : QM2CCONN
DEscription : LU 6.2 PARALLEL CONNECTION TO CICSTQM1
CONNECTION IDENTIFIERS
Netname : CICSTQM1
INDsys :
REMOTE ATTRIBUTES
REMOTESystem :
REMOTEName :
CONNECTION PROPERTIES
ACcessmethod : Vtam Vtam | IRc | INdirect | Xm
Protocol : Appc Appc | Lu61
SInglesess : No No | Yes
DAtastream : User User | 3270 | SCs | STrfield | Lms
RECordformat : U U | Vb
OPERATIONAL PROPERTIES
+ AUtoconnect : Yes No | Yes | All
APPLID=CICSTQM2
OBJECT CHARACTERISTICS
CEDA VIew
+ INService : Yes Yes | No
SECURITY
SEcurityname :
ATtachsec : Local Local | Identify | Verify | Persistent
| Mixidpe
BINDPassword : PASSWORD NOT SPECIFIED
BINDSecurity : No No | Yes
APPLID=CICSTQM2
10. The connection definition on the remote installation CICS system is called
QM1C, and is defined as follows:
OBJECT CHARACTERISTICS
CEDA View
Connection : QM1C
Group : QM1CCONN
DEscription : LU 6.2 PARALLEL CONNECTION TO CICSTQM2
CONNECTION IDENTIFIERS
Netname : CICSTQM2
INDsys :
REMOTE ATTRIBUTES
REMOTESystem :
REMOTEName :
CONNECTION PROPERTIES
ACcessmethod : Vtam Vtam | IRc | INdirect | Xm
Protocol : Appc Appc | Lu61
SInglesess : No No | Yes
DAtastream : User User | 3270 | SCs | STrfield | Lms
RECordformat : U U | Vb
OPERATIONAL PROPERTIES
+ AUtoconnect : Yes No | Yes | All
APPLID=CICSTQM1
Chapter 28. Message channel planning example for OS/390 using CICS 391
Planning example for OS/390 using CICS
OBJECT CHARACTERISTICS
CEDA VIew
+ INService : Yes Yes | No
SECURITY
SEcurityname :
ATtachsec : Local Local | Identify | Verify | Persistent
| Mixidpe
BINDPassword : PASSWORD NOT SPECIFIED
BINDSecurity : No No | Yes
APPLID=CICSTQM1
11. CKRC is started by CICS on the remote system, and is passed the channel
name during the initial data flows.
12. The transaction CKRC reads the definition for the receiver channel
QM1.2.QM2.CHANNEL from the channel definition file, which contains:
Channel Help
------------------------------------------------------------------------------
MCATTB3 QM1.2.QM2.CHANNEL - Settings CICSTQM1
More: +
Channel type . . . . . . : RECEIVER
Target system id . . . . :
Channel Help
------------------------------------------------------------------------------
MCATTC3 QM1.2.QM2.CHANNEL- Settings CICSTQM1
More: -
Channel type . . . . . . : RECEIVER
Exit routines
Security . . . . . . . :
Message . . . . . . . . :
Send . . . . . . . . . :
Receive . . . . . . . . :
13. Once the message channel has completed the startup negotiation, the sender
channel passes messages to the receiver channel. The receiver channel takes
the name of the queue manager, queue name and message descriptor from the
transmission header, and issues an MQPUT1 call to put the message on the
local queue, QM1_payroll.
When the batch limit of 100 is reached, or when the transmission queue is
empty, the sender and receiver channels issue a syncpoint to commit the
changes through the queue managers.
14. The commit action by the QM2 queue manager makes the messages available
to the “Payroll process” application.
Chapter 28. Message channel planning example for OS/390 using CICS 393
Planning example for OS/390 using CICS
First it describes the parameters needed for an LU 6.2 connection; then it describes:
v “Establishing an LU 6.2 connection” on page 400
v “Establishing an LU 6.2 connection using CICS” on page 402
v “Establishing a TCP connection” on page 404
Once the connection is established, you need to define some channels to complete
the configuration. This is described in “MQSeries for OS/390 configuration” on
page 405.
Configuration worksheet
Use this worksheet to record the values you use for your configuration. Where
numbers appear in the Reference column they indicate that the value must match
that in the appropriate worksheet elsewhere in this book. The examples that follow
in this chapter refer back to the values in the ID column. The entries in the
Parameter Name column are explained in “Explanation of terms” on page 398.
Table 36. Configuration worksheet for OS/390 using LU 6.2
ID Parameter Name Reference Example Used User Value
Definition for local node
«1¬ Command prefix +cpf
«2¬ Network ID NETID
«3¬ Node name MVSPU
«4¬ Local LU name MVSLU
«5¬ Symbolic destination M1
«6¬ Modename #INTER
«7¬ Local Transaction Program name MQSERIES
«8¬ LAN destination address 400074511092
Connection to an OS/2 system without using CICS
The values in this section of the table must match those used in Table 14 on page 138, as indicated.
«9¬ Symbolic destination M2
«10¬ Modename «17¬ #INTER
«11¬ Remote Transaction Program name «8¬ MQSERIES
«12¬ Partner LU name «6¬ OS2LU
Connection to an OS/2 system using CICS
The values in this section of the table must match those used in Table 14 on page 138, as indicated.
«13¬ Connection name OS2
«14¬ Group name EXAMPLE
«15¬ Session name OS2SESS
«16¬ Netname «6¬ OS2LU
Connection to a Windows NT system without using CICS
The values in this section of the table must match those used in Table 16 on page 170, as indicated.
«9¬ Symbolic destination M3
«10¬ Modename «17¬ #INTER
«11¬ Remote Transaction Program name «7¬ MQSERIES
«12¬ Partner LU name «5¬ WINNTLU
«17¬ Remote node ID «4¬ 05D 30F65
Connection to a Windows NT system using CICS
The values in this section of the table must match those used in Table 16 on page 170, as indicated.
«13¬ Connection name WNT
«14¬ Group name EXAMPLE
«15¬ Session name WNTSESS
The values in this section of the table must match those used in Table 20 on page 197, as indicated.
«9¬ Symbolic Destination M4
«10¬ Modename «14¬ #INTER
«11¬ Remote Transaction Program name «6¬ MQSERIES
«12¬ Partner LU name «4¬ AIXLU
Connection to an AIX system using CICS
The values in this section of the table must match those used in Table 20 on page 197, as indicated.
«13¬ Connection name AIX
«14¬ Group name EXAMPLE
«15¬ Session name AIXSESS
«16¬ Netname «4¬ AIXLU
Connection to an HP-UX system without using CICS
The values in this section of the table must match those used in Table 23 on page 219, as indicated.
«9¬ Symbolic Destination M5
«10¬ Modename «6¬ #INTER
«11¬ Remote Transaction Program name «7¬ MQSERIES
«12¬ Partner LU name «5¬ HPUXLU
Connection to an HP-UX system using CICS
The values in this section of the table must match those used in Table 23 on page 219, as indicated.
«13¬ Connection name HPUX
«14¬ Group name EXAMPLE
«15¬ Session name HPUXSESS
«16¬ Netname «5¬ HPUXLU
Connection to an AT&T GIS UNIX system without using CICS
The values in this section of the table must match those used in Table 25 on page 243, as indicated.
«9¬ Symbolic Destination M6
«10¬ Modename «15¬ #INTER
«11¬ Remote Transaction Program name «5¬ MQSERIES
«12¬ Partner LU name «4¬ GISLU
Connection to an AT&T GIS UNIX system using CICS
The values in this section of the table must match those used in Table 25 on page 243, as indicated.
«13¬ Connection name GIS
«14¬ Group name EXAMPLE
«15¬ Session name GISSESS
«16¬ Netname «4¬ GISLU
Connection to a Sun Solaris system without using CICS
The values in this section of the table must match those used in Table 27 on page 257, as indicated.
«9¬ Symbolic destination M7
«10¬ Modename «17¬ #INTER
«11¬ Remote Transaction Program name «8¬ MQSERIES
«12¬ Partner LU name «7¬ SOLARLU
The values in this section of the table must match those used in Table 27 on page 257, as indicated.
«13¬ Connection name SOL
«14¬ Group name EXAMPLE
«15¬ Session name SOLSESS
«16¬ Netname «7¬ SOLARLU
Connection to an AS/400 system without using CICS
The values in this section of the table must match those used in Table 42 on page 460, as indicated.
«9¬ Symbolic Destination M8
«10¬ Modename «17¬ #INTER
«11¬ Remote Transaction Program name «8¬ MQSERIES
«12¬ Partner LU name «3¬ AS400LU
Connection to an AS/400 system using CICS
The values in this section of the table must match those used in Table 42 on page 460, as indicated.
«13¬ Connection name AS4
«14¬ Group name EXAMPLE
«15¬ Session name AS4SESS
«16¬ Netname «3¬ AS400LU
Connection to a VSE/ESA system without using CICS
The values in this section of the table must match those used in Table 44 on page 485, as indicated.
«9¬ Symbolic destination M9
«10¬ Modename #INTER
«11¬ Remote Transaction Program name «4¬ MQ01
«12¬ Partner LU name «3¬ VSELU
Connection to a VSE/ESA system using CICS
The values in this section of the table must match those used in Table 44 on page 485, as indicated.
«13¬ Connection name VSE
«14¬ Group name EXAMPLE
«15¬ Session name VSESESS
«16¬ Netname «3¬ VSELU
Explanation of terms
«1¬ Command prefix
This is the unique command prefix of your MQSeries for OS/390
queue-manager subsystem. The OS/390 systems programmer defines this
at installation time, in SYS1.PARMLIB(IEFSSNss), and will be able to tell
you the value.
«2¬ Network ID
The VTAM startup procedure in your installation is partly customized by
the ATCSTRxx member of the data set referenced by the DDNAME
VTAMLST. The Network ID is the value specified for the NETID parameter
in this member. For Network ID you must specify the name of the NETID
The NOSCHED parameter tells APPC that our new LU will not be using the
LU 6.2 scheduler (ASCH), but has one of its own. TPDATA refers to the
Transaction Program data set in which LU 6.2 stores information about
transaction programs. Again, MQSeries will not use this, but it is required by
the syntax of the LUADD command.
2. Start the APPC subsystem with the command:
START APPC,SUB=MSTR,APPC=xx
where xx is the suffix of the PARMLIB member in which you added the LU in
step 1.
The effect of this is cumulative, that is, APPC will not lose its knowledge
of objects already defined to it in this or another PARMLIB member.
3. Add the new LU to a suitable VTAM major node definition. These are typically
in SYS1.VTAMLST. The APPL definition will look similar to the sample shown
in Figure 89 on page 401.
4. Activate the major node. This can be done with the command:
V,NET,ACT,majornode
5. Add an entry defining your LU to the CPI-C side information data set. Use the
APPC utility program ATBSDFMU to do this. Sample JCL is in
thlqual.SCSQPROC(CSQ4SIDE) (where thlqual is the target library high-level
qualifier for MQSeries data sets in your installation.)
The entry you add will look like this:
SIADD
DESTNAME(M1) «5¬
MODENAME(#INTER) «6¬
TPNAME(MQSERIES) «7¬
PARTNER_LU(MVSLU) «4¬
6. Create the channel-initiator parameter module for your queue manager. Sample
JCL to do this is in thlqual.SCSQPROC(CSQ4XPRM). You must specify the
local LU («4¬) assigned to your queue manager in the LUNAME= parameter of
the CSQ6CHIP macro.
//SYSIN DD *
CSQ6CHIP ADAPS=8, X
ACTCHL=200, X
CURRCHL=200, X
DISPS=5, X
LUNAME=MVSLU, X
LU62CHL=200, X
TCPCHL=200, X
TCPKEEP=NO, X
TCPNAME=TCPIP, X
TCPTYPE=OESOCKET, X
TRAXSTR=YES, X
TRAXTBL=2
END
/*
7. Modify the job to assemble and link-edit the tailored version of the initiator
macro to produce a new load module.
8. Submit the job and verify that it completes successfully.
Add an entry to the CPI-C side information data set to define the connection.
Sample JCL to do this is in thlqual.SCSQPROC(CSQ4SIDE).
What next?
The connection is now established. You are ready to complete the configuration.
Go to “MQSeries for OS/390 configuration” on page 405.
Defining a connection
1. At a CICS command line type:
CEDA DEF CONN(connection name) «13¬
GROUP(group name) «14¬
For example:
CEDA DEF CONN(OS2) GROUP(EXAMPLE)
2. Press Enter to define the connection to CICS.
A panel is displayed, as shown below.
For example:
CEDA DEF SESS(OS2SESS) GROUP(EXAMPLE)
2. Press Enter to define the group of sessions for the connection.
A panel is displayed, as shown below.
Note: If this connection group is already in use, severe errors will be reported. If
this occurs you must take the existing connections out of service, retry the
group installation, and then set the connections in service again using the
following commands:
1. CEMT I CONN
2. CEMT S CONN(*) OUTS
3. CEDA INS GROUP(Group name)
4. CEMT S CONN(*) INS
What next?
The connection is now established. You are ready to complete the configuration.
Go to “MQSeries for OS/390 configuration” on page 405.
What next?
The TCP connection is now established. You are ready to complete the
configuration. Go to “MQSeries for OS/390 configuration”.
where xparms is the name of the channel-initiator parameter module that you
created.
2. Start an LU 6.2 listener using the command:
+cpf START LSTR LUNAME(M1) TRPTYPE(LU62)
The LUNAME of M1 refers to the symbolic name you gave your LU («5¬). You
must specify TRPTYPE(LU62), otherwise the listener will assume you want
TCP.
3. Start a TCP listener using the command:
+cpf START LSTR
If you wish to use a port other than 1414 (the default MQSeries port), use the
command:
+cpf START LSTR PORT(1555)
MQSeries channels will not initialize successfully if the channel negotiation detects
that the message sequence number is different at each end. You may need to reset
this manually.
Note that the OS/390 product with CICS uses the message sequence number of the
message it last sent, while all other platforms use the sequence number of the next
message to be sent. This means you must reset the message sequence number to 0
at the OS/390 (with CICS) end of a channel and to 1 everywhere else.
Channel configuration
The following sections detail the configuration to be performed on the OS/390
queue manager to implement the channel described in Figure 32 on page 97.
Note: The words in bold are user-specified and reflect the names of MQSeries
objects used throughout these examples. If you change the names used here,
ensure that you also change the other references made to these objects
throughout this book. All others are keywords and should be entered as
shown.
Table 37. Configuration worksheet for MQSeries for OS/390
ID Parameter Name Reference Example Used User Value
Definition for local node
«A¬ Queue Manager Name MVS
«B¬ Local queue name MVS.LOCALQ
Connection to MQSeries for OS/2 Warp
The values in this section of the table must match those used in Table 15 on page 164, as indicated.
«C¬ Remote queue manager name «A¬ OS2
«D¬ Remote queue name OS2.REMOTEQ
«E¬ Queue name at remote system «B¬ OS2.LOCALQ
«F¬ Transmission queue name OS2
«G¬ Sender (LU 6.2) channel name MVS.OS2.SNA
«H¬ Sender (TCP) channel name MVS.OS2.TCP
«I¬ Receiver (LU 6.2) channel name «G¬ OS2.MVS.SNA
«J¬ Receiver (TCP) channel name «H¬ OS2.MVS.TCP
«K¬ Sender (LU 6.2 using CICS) channel name MVS.OS2.CICS
«L¬ Receiver (LU 6.2 using CICS) channel name OS2.MVS.CICS
Connection to MQSeries for Windows NT
The values in this section of the table must match those used in Table 17 on page 185, as indicated.
«C¬ Remote queue manager name «A¬ WINNT
«D¬ Remote queue name WINNT.REMOTEQ
«E¬ Queue name at remote system «B¬ WINNT.LOCALQ
«F¬ Transmission queue name WINNT
«G¬ Sender (LU 6.2) channel name MVS.WINNT.SNA
«H¬ Sender (TCP) channel name MVS.WINNT.TCP
«I¬ Receiver (LU 6.2) channel name «G¬ WINNT.MVS.SNA
«J¬ Receiver (TCP/IP) channel name «H¬ WINNT.MVS.TCP
«K¬ Sender (LU 6.2 using CICS) channel name MVS.WINNT.CICS
«L¬ Receiver (LU 6.2 using CICS) channel name WINNT.MVS.CICS
Connection to MQSeries for AIX
The values in this section of the table must match those used in Table 21 on page 211, as indicated.
«C¬ Remote queue manager name AIX
«D¬ Remote queue name AIX.REMOTEQ
«E¬ Queue name at remote system «B¬ AIX.LOCALQ
«F¬ Transmission queue name AIX
«G¬ Sender (LU 6.2) channel name MVS.AIX.SNA
«H¬ Sender (TCP/IP) channel name MVS.AIX.TCP
«I¬ Receiver (LU 6.2) channel name «G¬ AIX.MVS.SNA
| The values in this section of the table must match those used in Table 22 on page 216, as indicated.
| «C¬ Remote queue manager name DECUX
| «D¬ Remote queue name DECUX.REMOTEQ
| «E¬ Queue name at remote system «B¬ DECUX.LOCALQ
| «F¬ Transmission queue name DECUX
| «H¬ Sender (TCP) channel name DECUX.MVS.TCP
| «J¬ Receiver (TCP) channel name «H¬ MVS.DECUX.TCP
Connection to MQSeries for HP-UX
The values in this section of the table must match those used in Table 24 on page 239, as indicated.
«C¬ Remote queue manager name HPUX
«D¬ Remote queue name HPUX.REMOTEQ
«E¬ Queue name at remote system «B¬ HPUX.LOCALQ
«F¬ Transmission queue name HPUX
«G¬ Sender (LU 6.2) channel name MVS.HPUX.SNA
«H¬ Sender (TCP) channel name MVS.HPUX.TCP
«I¬ Receiver (LU 6.2) channel name «G¬ HPUX.MVS.SNA
«J¬ Receiver (TCP) channel name «H¬ HPUX.MVS.TCP
«K¬ Sender (LU 6.2 using CICS) channel name MVS.HPUX.CICS
«L¬ Receiver (LU 6.2 using CICS) channel name HPUX.MVS.CICS
Connection to MQSeries for AT&T GIS UNIX
The values in this section of the table must match those used in Table 26 on page 253, as indicated.
«C¬ Remote queue manager name GIS
«D¬ Remote queue name GIS.REMOTEQ
«E¬ Queue name at remote system «B¬ GIS.LOCALQ
«F¬ Transmission queue name GIS
«G¬ Sender (LU 6.2) channel name MVS.GIS.SNA
«H¬ Sender (TCP) channel name MVS.GIS.TCP
«I¬ Receiver (LU 6.2) channel name «G¬ GIS.MVS.SNA
«J¬ Receiver (TCP) channel name «H¬ GIS.MVS.TCP
«K¬ Sender (LU 6.2 using CICS) channel name MVS.GIS.CICS
«L¬ Receiver (LU 6.2 using CICS) channel name GIS.MVS.CICS
Connection to MQSeries for Sun Solaris
The values in this section of the table must match those used in Table 28 on page 272, as indicated.
«C¬ Remote queue manager name SOLARIS
«D¬ Remote queue name SOLARIS.REMOTEQ
«E¬ Queue name at remote system «B¬ SOLARIS.LOCALQ
«F¬ Transmission queue name SOLARIS
«G¬ Sender (LU 6.2) channel name MVS.SOLARIS.SNA
«H¬ Sender (TCP) channel name MVS.SOLARIS.TCP
«I¬ Receiver (LU 6.2) channel name «G¬ SOLARIS.MVS.SNA
| The values in this section of the table must match those used in Table 43 on page 472, as indicated.
| «C¬ Remote queue manager name AS400
| «D¬ Remote queue name AS400.REMOTEQ
| «E¬ Queue name at remote system «B¬ AS400.LOCALQ
| «F¬ Transmission queue name AS400
| «G¬ Sender (LU 6.2) channel name MVS.AS400.SNA
| «H¬ Sender (TCP/IP) channel name MVS.AS400.TCP
| «I¬ Receiver (LU 6.2) channel name «G¬ AS400.MVS.SNA
| «J¬ Receiver (TCP/IP) channel name «H¬ AS400.MVS.TCP
| «K¬ Sender (LU 6.2 using CICS) channel name MVS.AS400.CICS
| «L¬ Receiver (LU 6.2 using CICS) channel name AS400.MVS.CICS
Connection to MQSeries for VSE/ESA
The values in this section of the table must match those used in Table 45 on page 490, as indicated.
«C¬ Remote queue manager name VSE
«D¬ Remote queue name VSE.REMOTEQ
«E¬ Queue name at remote system «B¬ VSE.LOCALQ
«F¬ Transmission queue name VSE
«G¬ Sender channel name MVS.VSE.SNA
«I¬ Receiver channel name «G¬ VSE.MVS.SNA
Remote Queue
Object type : QREMOTE
Name : OS2.REMOTEQ «D¬
Name on remote system : OS2.LOCALQ «E¬
Remote system name : OS2 «C¬
Transmission queue : OS2 «F¬
Sender Channel
Channel name : MVS.OS2.SNA «G¬
Transport type : L (LU6.2)
Transmission queue name : OS2 «F¬
Connection name : M2 «9¬
Receiver Channel
Channel name : OS2.MVS.SNA «I¬
Remote Queue
Object type : QREMOTE
Name : OS2.REMOTEQ «D¬
Name on remote system : OS2.LOCALQ «E¬
Remote system name : OS2 «C¬
Transmission queue : OS2 «F¬
Sender Channel
Channel name : MVS.OS2.TCP «H¬
Transport type : T (TCP)
Transmission queue name : OS2 «F¬
Connection name : os2.tcpip.hostname
Receiver Channel
Channel name : OS2.MVS.TCP «J¬
Remote Queue
Object type : QREMOTE
Name : OS2.REMOTEQ «D¬
Name on remote system : OS2.LOCALQ «E¬
Remote system name : OS2 «C¬
Transmission queue : OS2 «F¬
Sender Channel
Channel name : MVS.OS2.CICS «K¬
Channel type : 1 (Sender)
Target system id : <blank>
Transmission queue name : OS2 «F¬
Transaction id : CKSG
Connection name : OS2 «13¬
LU62 TP name : MQSERIES
Connect to queue
manager . . . . . . : MQ25
Target queue manager : MQ25
Response wait time . : 10 seconds
2. Specify an Action of 2, enter an Object type of QLOCAL, and specify a Name for
the queue.
3. Press Enter.
The first Define a Local Queue panel is displayed. There are several panels in
all.
4. Use F7 and F8 to move backwards and forwards through the panels of
attributes and set each attribute as required.
Specifically, you should check the values for Usage and Trigger type.
Complete fields, then press F8 for further fields, or Enter to define queue.
More: +
More: - +
More: - +
Trigger Definition
Trigger set . . . . . . .
N Y=Yes,N=No
Trigger message priority .
0 0 - 9
Trigger depth . . . . . 1 . 1 - 999999999
Trigger data . . . . . . .
________________________________
________________________________
Process name . . . . . . . ________________________________________________
Initiation queue . . . . . ________________________________________________
More: - +
Event Control
More: -
Backout Reporting
Complete fields, then press F8 for further fields, or Enter to define queue.
More: +
More: -
4. Set each parameter as required. Specifically, you should set the values for
Remote name, Remote queue manager, and Transmission queue.
Complete fields, then press F8 for further fields, or Enter to define channel.
More: +
More: - +
More: - +
More: -
Complete fields, then press F8 for further fields, or Enter to define channel.
More: +
More: - +
More: -
Channel Help
------------------------------------------------------------------------------
MCATTB1 MVS.OS2.CICS - Settings MVSLU
More: +
Channel type . . . . . . : SENDER
Target system id . . . . :
Transmission queue name . : OS2
Batch size . . . . . . . : 0001
Sequence number wrap . . : 0999999999
Max message size . . . . : 0032000
Max transmission . . . . : 32000
Disconnect interval . . . : 0001
Transaction id . . . . . : CKSG
Connection name . . . . . : <CICS connection to target, defined in CEDA>
CICS profile name . . . . :
LU62 TP name . . . . . . : MQSERIES
Channel Help
------------------------------------------------------------------------------
MCATTC1 MVS.OS2.CICS - Settings MVSLU
More: -
Channel type . . . . . . : SENDER
Retry
Count . . . . . . . . . : 005
Fast interval . . . . . : 005
Slow interval . . . . . : 030
Exit routines
Security . . . . . . . :
Message . . . . . . . . :
Send . . . . . . . . . :
Receive . . . . . . . :
Channel Help
------------------------------------------------------------------------------
MCATTB3 OS2.MVS.CICS - Settings MVSLU
More:
Channel type . . . . . . : RECEIVER
Target system id . . . . :
Channel Help
------------------------------------------------------------------------------
MCATTC3 OS2.MVS.CICS - Settings MVSLU
More: -
Channel type . . . . . . : RECEIVER
Exit routines
Security . . . . . . . :
Message . . . . . . . . :
Send . . . . . . . . . :
Receive . . . . . . . . :
This part of the book describes the MQSeries distributed queue management
function for MQSeries for AS/400.
The channel control function consists of MQSeries for AS/400 panels, commands,
programs, a sequence number file, and a file for the channel definitions. The
following is a brief description of the components of the channel control function:
v The channel definition file (CDF):
– Is indexed on channel name
– Holds channel definitions
v The channel commands are a subset of the MQSeries for AS/400 set of
commands.
Use the command GO CMDMQM to display the full set of MQSeries for AS/400
commands.
v You use channel definition panels, or commands to:
– Create, copy, display, change, and delete channel definitions
– Start and stop channels, ping, reset channel sequence numbers, and resolve
in-doubt messages when links cannot be re-established
– Display status information about channels
v Sequence numbers and logical unit of work (LUW) identifiers are stored in the
synchronization file, and are used for channel synchronization purposes.
Operator commands
The following table shows the full list of MQSeries for AS/400 commands that you
may need when setting up and controlling channels. In general, issuing a
command results in the appropriate panel being displayed.
Chapter 30. Monitoring and controlling channels in MQSeries for AS/400 425
Getting started
Getting started
Use these commands and panels to:
1. Define message channels and associated objects
2. Monitor and control message channels
| By using the F4=Prompt key, you can specify the relevant queue manager. If you
| do not use the prompt, the default queue manager is assumed. With F4=Prompt,
| an additional panel is displayed where you may enter the relevant queue manager
| name and sometimes other data.
Channels must be completely defined, and their associated objects must exist and
be available for use, before a channel can be started. This chapter shows you how
to do this.
In addition, the particular communication link for each channel must be defined
and available before a channel can be run. For a description of how LU 6.2 and
TCP/IP links are defined, see the particular communication guide for your
installation as listed in “Related publications” on page 662.
Creating objects
Use the CRTMQMQ command to create the queue and alias objects, such as:
transmission queues, remote queue definitions, queue manager alias definitions,
reply-to queue alias definitions, and reply-to local queues.
| For a list of default objects, see the MQSeries for AS/400 V5.1 System Administration
| book.
Creating a channel
To create a new channel:
1. Use F6 from the Work with MQM Channels panel (the second panel that
displays channel details).
Alternatively, use the CRTMQMCHL command from the command line.
Either way, this displays the Create Channel panel. Type:
v The name of the channel in the field provided
v The channel type for this end of the link
2. Press Enter.
Note: You are strongly recommended to name all the channels in your network
uniquely. As shown in Table 1 on page 30, including the source and target
queue manager names in the channel name is a good way to do this.
You are presented with the appropriate channel settings panel for the type of
channel you have chosen. Fill in the fields with the information you have gathered
previously. See “Appendix A. Channel planning form” on page 623 for an example
of how you might want to gather information. Press Enter to create the channel.
You are provided with help in deciding on the content of the various fields in the
descriptions of the channel definition panels in the help panels, and in “Chapter 6.
Channel attributes” on page 77.
Chapter 30. Monitoring and controlling channels in MQSeries for AS/400 427
Creating a channel
More...
F3=Exit F4=Prompt F5=Refresh F12=Cancel F13=How to use this display
F24=More keys
Bottom
F3=Exit F4=Prompt F5=Refresh F12=Cancel F13=How to use this display
F24=More keys
| For applications to be able to exchange messages you must start a listener program
| for inbound connections using the STRMQMLSR command.
| For outbound connections you must start the channel in one of the following ways:
| 1. Use the CL command STRMQMCHL, specifying the channel name, to start the
| channel as a process or a thread, depending on the MCATYPE parameter. (If
| channels are started as threads, they are threads of a channel initiator.)
| STRMQMCHL CHLNAME(QM1.TO.QM2) MQNAME(MYQMGR)
| 2. Use a channel initiator to trigger the channel. One channel initiator is started
| automatically when the queue manager is started. This can be eliminated by
| changing the chinit stanza in the qm.ini file for that queue manager.
| 3. Use the WRKMQMCHL command to begin the Work with Channels panel and
| choose option 14 to start a channel.
Chapter 30. Monitoring and controlling channels in MQSeries for AS/400 429
Selecting a channel
Selecting a channel
To select a channel, use the WRKMQMCHL command to begin at the Work with
Channels panel:
1. Move the cursor to the option field at the left of the required channel name.
2. Type an option number.
3. Press Enter to activate your choice.
If you select more than one channel, the options are activated in sequence.
Browsing a channel
To browse the settings of a channel, use the WRKMQMCHL command to begin at
the Display Channel panel:
1. Move the cursor to the left of the required channel name.
2. Type option 5 (Display).
3. Press Enter to activate your choice.
If you select more than one channel, they are presented in sequence.
Alternatively, you can use the DSPMQMCHL command from the command line.
This results in the respective Display Channel panel being displayed with details
of the current settings for the channel. The fields are described in “Chapter 6.
Channel attributes” on page 77.
Chapter 30. Monitoring and controlling channels in MQSeries for AS/400 431
Renaming a channel
Bottom
Renaming a channel
To rename a message channel, begin at the Work with Channels panel:
1. End the channel.
2. Use option 3 (Copy) to create a duplicate with the new name.
3. Use option 5 (Display) to check that it has been created correctly.
4. Use option 4 (Delete) to delete the original channel.
If you decide to rename a message channel, ensure that both channel ends are
renamed at the same time.
Alternatively, selecting option 8 (Work with Status) from the Work with MQM
Channels panel also brings up the first status panel.
| Work with channel status applies to all message channels. It does not apply to
| MQI channels other than server-connection channels on MQSeries for AS/400 V5.1.
Note: The Work with Channel Status screens only show channels that are active
after messages have been sent through the channel and the sequence
number has been incremented.
Bottom
Parameters or command
===>
F3=Exit F4=Prompt F5=Refresh F6=Create F9=Retrieve F11=Change view
F12=Cancel F21=Print
Bottom
Parameters or command
===>
F3=Exit F4=Prompt F5=Refresh F6=Create F9=Retrieve F11=Change view
F12=Cancel F21=Print
Chapter 30. Monitoring and controlling channels in MQSeries for AS/400 433
Work with channel status
Bottom
Parameters or command
===>
F3=Exit F4=Prompt F5=Refresh F6=Create F9=Retrieve F11=Change view
F12=Cancel F21=Print
The options available in the Work with Channel Status panel are:
Work-with-channel choices
The Work with Channels panel is reached with the command WRKMQMCHL, and
it allows you to monitor the status of all channels listed, and to issue commands
against selected channels.
Panel choices
The following choices are provided in the Work with MQM channels panel and the
Work with Channel Status panel.
F6=Create
| Use the Create option, or enter the CRTMQMCHL command from the command
| line, to obtain the Create Channel panel. There are examples of Create Channel
| panels, starting at Figure 92 on page 427.
With this panel, you create a new channel definition from a screen of fields filled
with default values supplied by MQSeries for AS/400. Type the name of the
channel, select the type of channel you are creating, and the communication
method to be used.
When you press Enter, the panel is displayed. Type information in all the required
fields in this panel, and the three pages making up the complete panel, and then
save the definition by pressing Enter.
The channel name must be the same at both ends of the channel, and unique
within the network. However, you should restrict the characters used to those that
are valid for MQSeries for AS/400 object names; see “Chapter 6. Channel
attributes” on page 77.
All panels have default values supplied by MQSeries for AS/400 for some fields.
You can customize these values, or you can change them when you are creating or
copying channels. To customize the values, see the MQSeries for AS/400 System
Administration.
You can create your own set of channel default values by setting up dummy
channels with the required defaults for each channel type, and copying them each
time you want to create new channel definitions.
Table 38 on page 436 shows the channel attributes for each type of channel. See
“Chapter 6. Channel attributes” on page 77 for details about the fields.
Chapter 30. Monitoring and controlling channels in MQSeries for AS/400 435
Panel choices
Table 38. Channel attribute fields per message channel type
Attribute field Sender Server Receiver Requester
Batch size U U U U
Channel name U U U U
Channel type U U U U
Connection name U U U
Context U U
Disconnect interval U U
Heartbeat interval U U U U
Long retry wait interval U U
Long retry count U U
Maximum message length U U U U
Message channel agent name U
Message exit user data U U U U
Message retry exit count U U
Message retry exit data U U
Message retry exit interval U U
Message retry exit name U U
Nonpersistent message speed U U U U
Receive exit U U U U
Receive exit user data U U U U
Security exit U U U U
Security exit user data U U U U
Send exit U U U U
Send exit user data U U U U
Sequence number wrap U U U U
Short retry wait interval U U
Short retry count U U
Transport type U U U U
Transmission queue U U
Message exit U U U U
2=Change
Use the Change option, or the CHGMQMCHL command, to change an existing
channel definition, except for the channel name. Simply type over the fields to be
changed in the channel definition panel, and then save the updated definition by
pressing Enter.
3=Copy
Use the Copy option, or the CPYMQMCHL command, to copy an existing channel.
The Copy panel enables you to define the new channel name. However, you
should restrict the characters used to those that are valid for MQSeries for AS/400
object names; see the MQSeries for AS/400 System Administration.
Press Enter on the Copy panel to display the details of current settings. You can
change any of the new channel settings. Save the new channel definition by
pressing Enter.
5=Display
Use the Display option to display the current definitions for the channel. This
choice displays the panel with the fields showing the current values of the
parameters, and protected against user input.
13=Ping
Use the Ping option to exchange a fixed data message with the remote end. This
gives some confidence to the system supervisor that the link is available and
functioning.
Ping does not involve the use of transmission queues and target queues. It uses
channel definitions, the related communication link, and the network setup.
It is available from sender and server channels, only. The corresponding channel is
started at the far side of the link, and performs the start up parameter negotiation.
Errors are notified normally.
The result of the message exchange is presented in the Ping panel for you, and is
the returned message text, together with the time the message was sent, and the
time the reply was received.
14=Start
The Start option is available for sender, server, and requester channels. It should
not be necessary where a channel has been set up with queue manager triggering.
| The Start option is also used for receiver channels that have a DISABLED or
| STOPPED status. Starting a receiver channel that is in DISABLED or STOPPED
| state resets the channel and allows it to be started from the remote channel.
Chapter 30. Monitoring and controlling channels in MQSeries for AS/400 437
Panel choices
When started, the sending MCA reads the channel definition file and opens the
transmission queue. A channel start-up sequence is executed, which remotely starts
the corresponding MCA of the receiver or server channel. When they have been
started, the sender and server processes await messages arriving on the
transmission queue and transmit them as they arrive.
When you use triggering, you will need to start the continuously running trigger
process to monitor the initiation queue. The STRMQMCHLI command can be used
for this.
At the far end of a channel, the receiving process may be started in response to a
channel startup from the sending end. The method of doing this is different for LU
6.2 and TCP/IP connected channels:
v LU 6.2 connected channels do not require any explicit action at the receiving end
of a channel.
v TCP connected channels require a listener process to be running continuously.
This process awaits channel startup requests from the remote end of the link and
starts the process defined in the channel definitions for that connection.
When the remote machine is an AS/400, you can use the STRMQMLSR
command for this.
Use of the Start option always causes the channel to re-synchronize, where
necessary.
To transfer messages, remote queues and remote queue definitions must exist.
A message is returned to the panel confirming that the request to start a channel
has been accepted. For confirmation that the Start process has succeeded, check the
system log, or press F5 (refresh the screen).
15=End
Use the End option to request the channel to stop activity. The channel will not
send any more messages until the operator starts the channel again. (For
information about restarting stopped channels, see “Restarting stopped channels”
on page 69.)
You can select the type of stop you require if you press F4 before Enter. You can
choose IMMEDIATE, or CONTROLLED.
Stop controlled
This choice requests the channel to close down in an orderly way; the current
batch of messages is completed, and the syncpoint procedure is carried out with
the other end of the channel.
16=Reset
The Reset option changes the message sequence number. Use it with care, and only
after you have used the Resolve option to resolve any in-doubt situations. This
option is available only at the sender or server channel. The first message starts the
new sequence the next time the channel is started.
17=Resolve
Use the Resolve option when messages are held in-doubt by a sender or server, for
example because one end of the link has terminated, and there is no prospect of it
recovering. The Resolve option accepts one of two parameters: BACKOUT or
COMMIT. Backout restores messages to the transmission queue, while Commit
discards them.
The channel program does not try to establish a session with a partner. Instead, it
determines the logical unit of work identifier (LUWID) which represents the
in-doubt messages. It then issues, as requested, either:
v BACKOUT to restore the messages to the transmission queue; or
v COMMIT to delete the messages from the transmission queue.
Chapter 30. Monitoring and controlling channels in MQSeries for AS/400 439
Panel choices
In addition, where needed, the triggering arrangement must be prepared with the
definition of the necessary processes and queues.
If you want to make use of remote queue definitions, use the same command to
create a queue of type *RMT, and Usage of *NORMAL.
To create a transmission queue, use the CRTMQMQ command from the command
line to present you with the first queue creation panel; see Figure 103.
Queue name . . . . . . . . . . .
Bottom
F3=Exit F4=Prompt F5=Refresh F12=Cancel F13=How to use this display
F24=More keys
+
Type the name of the queue and specify the type of queue that you wish to create:
Local, Remote, or Alias. For a transmission queue, specify Local (*LCL) on this
panel and press Enter.
More...
F3=Exit F4=Prompt F5=Refresh F12=Cancel F13=How to use this display
F24=More keys
Change any of the default values shown. Press page down to scroll to the next
screen; see Figure 105.
More...
F3=Exit F4=Prompt F5=Refresh F12=Cancel F13=How to use this display
F24=More keys
Type *TMQ, for transmission queue, in the Usage field of this panel, and change any
of the default values shown in the other fields.
Bottom
F3=Exit F4=Prompt F5=Refresh F12=Cancel F13=How to use this display
F24=More keys
When you are satisfied that the fields contain the correct data, press Enter to create
the queue.
Triggering channels
An overview of triggering is given in “Triggering channels” on page 20, while it is
described in depth in the MQSeries Application Programming Guide. This section
provides you with information specific to MQSeries for AS/400.
You need to set up the transmission queue for the channel specifying TRIGGER
and specifying the channel name in the TRIGDATA field: For example:
| CRTMQMQ QNAME(MYXMITQ) QTYPE(*LCL) MQMNAME(MYQMGR) +
| PRCNAME(MYPROCESS) TRGENBL(*YES) INITQNAME(MYINITQ) +
| USAGE(*TMQ)
Next you define a process in MQSeries for AS/400 naming the MCA sender
program, as the program to be triggered when messages arrive on the transmission
queue. Type CRTMQMPRC on the command line to display the Create Process
panel. Alternatively, select F6 (Create) from the Work with MQM Process panel.
See Figure 107 on page 444 for the first page of the Create Process panel. The
MQSeries for AS/400 System Administration book contains details of defining
processes to be triggered.
More...
F3=Exit F4=Prompt F5=Refresh F12=Cancel F13=How to use this display
F24=More keys
Bottom
F3=Exit F4=Prompt F5=Refresh F12=Cancel F13=How to use this display
F24=More keys
Channel programs
There are different types of channel programs (MCAs) available for use at the
channels. The names are contained in the following table.
Table 39. Program and transaction names
Program name Direction of connection Communication
| AMQCRSTA Inbound TCP
AMQCRS6A Inbound LU 6.2
AMQRMCLA Outbound Any
Undelivered-message queue
It is advisable that you have an application available to process the messages
arriving on the undelivered-message queue (also known as the dead-letter queue
or DLQ). The program could be triggered, or run at regular intervals. For more
details, see the MQSeries for AS/400 System Administration and the MQSeries
Application Programming Guide.
Queues in use
MCAs for receiver channels may keep the destination queues open even when
messages are not being transmitted; this results in the queues appearing to be “in
use”.
You need to provide users with authority to make use of the MQSeries for AS/400
facilities, and this is organized according to actions to be taken with respect to
objects and definitions. For example:
v Queue managers can be started and stopped by authorized users
v Applications need to connect to the queue manager, and have authority to make
use of queues
v Message channels need to be created and controlled by authorized users
Here are some facts about the way MQSeries for AS/400 operates security:
v Users are identified and authenticated by OS/400
v Queue manager services invoked by applications are run with the authority of
the queue manager user profile, but in the user’s process
v Queue manager services invoked by user commands are run with the authority
of the queue manager user profile
In order to run, such programs must have predefined names and be available on
call to the channel programs. The names of the exit programs are included in the
message channel definitions.
There is a defined control block interface for handing over control to these
programs, and for handling the return of control from these programs.
The precise places where these programs are called, and details of control blocks
and names, are to be found in “Part 7. Further intercommunication considerations”
on page 503.
Deciding on a connection
There are two forms of communication between MQSeries for AS/400 systems:
v AS/400 TCP
For TCP, a host address may be used, and these connections are set up as
described in the OS/400 Communication Configuration Reference.
| In the TCP environment, each distributed service is allocated a unique TCP
| address which may be used by remote machines to access the service. The TCP
| address consists of a host name/number and a port number. All queue
| managers will use such a number to communicate with each other via TCP.
v AS/400 SNA (LU 6.2)
This form of communication requires the definition of an AS/400 SNA logical
unit type 6.2 (LU 6.2) that provides the physical link between the AS/400
serving the local queue manager and the system serving the remote queue
manager. Refer to the OS/400 Communication Configuration Reference for details on
configuring communications in OS/400.
| A port number is required for a complete TCP address; if this is not supplied, the
| default port number 1414 is used. On the initiating end of a connection (sender,
| requester, and server channel types) it is possible to provide an optional port
| number for the connection, for example:
Connection name 9.20.9.30 (1555)
In this case the initiating end will attempt to connect to a receiving program at
port 1555.
| You can start more than one listener for each queue manager. By default, the
| STRMQMLSR command uses port 1414 but you can override this. To override the
| default setting, add the following statements to the qm.ini file of the selected
| queue manager (in this example, the listener is required to use port 2500):
| TCP:
| Port=2500
| This new value is read only when the TCP listener is started. If you have a listener
| already running, this change is not be seen by that program. To use the new value,
| stop the listener and issue the STRMQMLSR command again. Now, whenever you
| use the STRMQMLSR command, the listener defaults to the new port.
| This change makes the listener default to the new port for the duration of the
| listener job.
Select option 3 (Change TCP Attributes). You can now specify a time interval in
minutes. You can specify a value in the range 1 through 40320 minutes; the default
is 120.
The default listener backlog value on AS/400 is 255. If the backlog reaches this
value, the TCP connection is rejected and the channel will not be TCP: able to start.
For MCA channels, this results in the channel going into a RETRY state and
retrying the connection at a later time.
This overrides the default maximum number of outstanding requests (255) for the
TCP listener.
Note: Some operating systems support a larger value than the default. If necessary,
this can be used to avoid reaching the connection limit.
The initiated end of the link must have a routing entry definition to complement
this CSI object. Further information on managing work requests from remote
LU 6.2 systems is available in the AS/400 Programming: Work Management Guide.
See the Multiplatform APPC Configuration Guide and the following table for
information.
Table 41. Settings on the local OS/400 system for a remote queue manager platform
Remote platform TPNAME
OS/390 without CICS The same as in the corresponding side information on the
remote queue manager.
OS/390 using CICS CKRC relates to a sender channel on the OS/400 system.
CKSV relates to a requester channel on the OS/400 system.
CKRC relates to a server channel on the OS/400 system.
OS/400 The same as the compare value in the routing entry on the
OS/400 system.
OS/2 As specified in the OS/2 Run Listener command, or
defaulted from the OS/2 queue manager configuration file.
Digital OVMS As specified in the Digital OVMS Run Listener command.
Tandem NSK The same as the TPNAME specified in the receiver-channel
definition.
| Other UNIX systems The invokable Transaction Program defined in the remote
| LU 6.2 configuration.
Windows NT As specified in the Windows NT Run Listener command, or
the invokable Transaction Program that was defined using
TpSetup on Windows NT.
If you have more than one queue manager on the same machine, ensure that the
TPnames in the channel definitions are unique.
The initiating end panel is shown in Figure Figure 109. You press F10 from the first
panel displayed to obtain the complete panel as shown.
Additional Parameters
Bottom
F3=Exit F4=Prompt F5=Refresh F12=Cancel F13=How to use this display
F24=More keys
Note: For LU 6.2, the link between the message channel definition and the
communication connection is the Connection name field of the
message channel definition at the sending end. This field contains
the name of the CSI object.
Library
The name of the library where this definition will be stored.
The CSI object must be available in a library accessible to the program
serving the message channel, for example, QSYS, QMQM, and QGPL.
If the name is incorrect, missing, or cannot be found then an error will
occur on channel start up.
Remote location
Specifies the remote location name with which your program
communicates.
To enable the initiating end to start the receiving channel, add a routing entry to a
subsystem at the initiated end. The subsystem must be the one that allocates the
APPC device used in the LU 6.2 sessions and, therefore, it must have a valid
communications entry for that device. The routing entry calls the program that
starts the receiving end of the message channel.
Use the OS/400 commands (for example, ADDRTGE) to define the end of the link
that is initiated by a communication session.
Bottom
F3=Exit F4=Prompt F5=Refresh F12=Cancel F13=How to use this display
F24=More keys
Subsystem description
The name of your subsystem where this definition resides. Use the OS/400
WRKSBSD command to view and update the appropriate subsystem
description for the routing entry.
Note: The starting position field is the character position in the string for
comparison, and this is always 37.
Program to call
| The name of the program that runs the inbound message program to be
| called to start the session.
| The program, AMQCRC6A, is called for the default queue manager. This is
| a program supplied with MQSeries for AS/400 that sets up the
| environment and then calls AMQCRS6A.
| For additional queue managers:
| v Each queue manager has a specific LU 6.2 invokable program located in
| its library. This program is called AMQCRC6B and is automatically
| generated when the queue manager is created.
| v Each queue manager requires a specific routing entry with unique
| routing data to be added. This routing data should match the
| Transaction program name supplied by the requesting system (see
| “Initiating end (Sending)” on page 452).
Start
Opt Seq Nbr Program Library Compare Value Pos
10 *RTGDTA 'QZSCSRVR' 37
20 *RTGDTA 'QZRCSRVR' 37
30 *RTGDTA 'QZHQTRG' 37
50 *RTGDTA 'QVPPRINT' 37
60 *RTGDTA 'QNPSERVR' 37
70 *RTGDTA 'QNMAPINGD' 37
80 QNMAREXECD QSYS 'AREXECD' 37
90 AMQCRC6A QMQMBW 'MQSERIES' 37
100 *RTGDTA 'QTFDWNLD' 37
150 *RTGDTA 'QMFRCVR' 37
| Note: You can have more than one routing entry for each queue manager
| by using different routing data. This gives the option of different job
| priorities depending on the classes used.
| Class The name and library of the class used for the steps started through this
routing entry. The class defines the attributes of the routing step’s running
environment and specifies the job priority. An appropriate class entry must
be specified. Use, for example, the WRKCLS command to display existing
classes or to create a new class. Further information on managing work
requests from remote LU 6.2 systems is available in the AS/400
Programming: Work Management Guide.
First it describes the parameters needed for an LU 6.2 connection, then it describes
“Establishing an LU 6.2 connection” on page 464 and “Establishing a TCP
connection” on page 469.
Once the connection is established, you need to define some channels to complete
the configuration. This is described in “MQSeries for AS/400 configuration” on
page 471.
Configuration worksheet
Use the following worksheet to record the values you will use for this
configuration. Where numbers appear in the Reference column they indicate that
the value must match that in the appropriate worksheet elsewhere in this book.
The examples that follow in this chapter refer back to the values in the ID column
of this table. The entries in the Parameter Name column are explained in
“Explanation of terms” on page 462.
The values in this section must match those used in Table 14 on page 138, as indicated.
«9¬ Network ID «2¬ NETID
«10¬ Control point name «3¬ OS2PU
«11¬ LU name «6¬ OS2LU
«12¬ Controller description OS2PU
«13¬ Device OS2LU
«14¬ Side information OS2CPIC
«15¬ Transaction Program «8¬ MQSERIES
«16¬ LAN adapter address «10¬ 10005AFC5D83
«17¬ Mode «17¬ #INTER
Connection to a Windows NT system
The values in this section must match those used in Table 16 on page 170, as indicated.
«9¬ Network ID «2¬ NETID
«10¬ Control point name «3¬ WINNTCP
«11¬ LU name «5¬ WINNTLU
«12¬ Controller description WINNTCP
«13¬ Device WINNTLU
«14¬ Side information NTCPIC
«15¬ Transaction Program «7¬ MQSERIES
«16¬ LAN adapter address «9¬ 08005AA5FAB9
«17¬ Mode «17¬ #INTER
Connection to an AIX system
The values in this section must match those used in Table 20 on page 197, as indicated.
«9¬ Network ID «1¬ NETID
«10¬ Control point name «2¬ AIXPU
«11¬ LU name «4¬ AIXLU
«12¬ Controller description AIXPU
«13¬ Device AIXLU
«14¬ Side information AIXCPIC
«15¬ Transaction Program «6¬ MQSERIES
«16¬ LAN adapter address «8¬ 123456789012
«17¬ Mode «14¬ #INTER
Connection to an HP-UX system
The values in this section must match those used in Table 23 on page 219, as indicated.
The values in this section must match those used in Table 25 on page 243, as indicated.
«9¬ Network ID «2¬ NETID
«10¬ Control point name «3¬ GISPU
«11¬ LU name «4¬ GISLU
«12¬ Controller description GISPU
«13¬ Device GISLU
«14¬ Side information GISCPIC
«15¬ Transaction Program «5¬ MQSERIES
«16¬ LAN adapter address «8¬ 10007038E86B
«17¬ Mode «15¬ #INTER
Connection to a Sun Solaris system
The values in this section must match those used in Table 27 on page 257, as indicated.
«9¬ Network ID «2¬ NETID
«10¬ Control point name «3¬ SOLARPU
«11¬ LU name «7¬ SOLARLU
«12¬ Controller description SOLARPU
«13¬ Device SOLARLU
«14¬ Side information SOLCPIC
«15¬ Transaction Program «8¬ MQSERIES
«16¬ LAN adapter address «5¬ 08002071CC8A
«17¬ Mode «17¬ #INTER
Connection to an OS/390 or MVS/ESA system without CICS
The values in this section must match those used in Table 36 on page 396, as indicated.
«9¬ Network ID «2¬ NETID
«10¬ Control point name «3¬ MVSPU
«11¬ LU name «4¬ MVSLU
«12¬ Controller description MVSPU
«13¬ Device MVSLU
«14¬ Side information MVSCPIC
«15¬ Transaction Program «7¬ MQSERIES
«16¬ LAN adapter address «8¬ 400074511092
«17¬ Mode «6¬ #INTER
Connection to a VSE/ESA system
The values in this section must match those used in Table 44 on page 485, as indicated.
Explanation of terms
«1¬ «2¬ «3¬
See “How to find network attributes” on page 463 for the details of how to
find the configured values.
«4¬ LAN destination address
The hardware address of the AS/400 system token-ring adapter. You can
find the value using the command DSPLIND Line description («6¬).
«5¬ Subsystem description
This is the name of any OS/400 subsystem that will be active while using
the queue manager. The name QCMN has been used because this is the
OS/400 communications subsystem.
«6¬ Line description
If this has been specified it is indicated in the Description field of the
resource Resource name. See “How to find the value of Resource name” on
page 463 for details. If the value is not specified you will need to create a
line description.
«7¬ Resource name
See “How to find the value of Resource name” on page 463 for details of
how to find the configured value.
«8¬ Local Transaction Program name
MQSeries applications trying to converse with this workstation will specify
a symbolic name for the program to be run at the receiving end. This will
have been defined on the channel definition at the sender. For simplicity,
wherever possible use a transaction program name of MQSERIES, or in the
case of a connection to VSE/ESA, where the length is limited to 4 bytes,
use MQTP.
See Table 41 on page 451 for more information.
«12¬ Controller description
This is an alias for the Control Point name (or Node name) of the partner
system. For convenience we have used the actual name of the partner in
this example.
«13¬ Device
This is an alias for the LU of the partner system. For convenience we have
used the LU name of the partner in this example.
If you need to change these values use the command CHGNETA. An IPL may be
required to apply your changes.
More...
Press Enter to continue.
F3=Exit F12=Cancel
Check that the values for Local network ID («1¬), Local control point name («2¬),
and Default local location («3¬), correspond to the values on your worksheet.
Configuration
Opt Resource Description Type Description
CC02 2636 Comm Processor
LIN04 2636 LAN Adapter
LIN041 TOKENRINGL 2636 Token-Ring Port
Bottom
F3=Exit F5=Refresh F6=Print F11=Display resource addresses/statuses
F12=Cancel F23=More options
Bottom
F3=Exit F4=Prompt F5=Refresh F10=Additional parameters F12=Cancel
F13=How to use this display F24=More keys
Parameter LIND required. +
Bottom
F3=Exit F4=Prompt F5=Refresh F12=Cancel F13=How to use this display
F24=More keys
Parameter SBSD required. +
2. Specify your value for Subsystem description («5¬), and the values shown here
for Routing entry sequence number, Compare value («8¬), Starting position,
Program to call, and the Library containing the program to call.
3. Type the command STRSBS subsystem description («5¬) and press Enter.
Bottom
F3=Exit F4=Prompt F5=Refresh F10=Additional parameters F12=Cancel
F13=How to use this display F24=More keys
Parameter CTLD required. +
2. Specify a value for Controller description («12¬), set Link type to *LAN, and set
Online at IPL to *NO.
3. Press Enter twice, followed by F10.
4. Specify values for Switched line list («6¬), Remote network identifier («9¬),
Remote control point («10¬), and LAN remote adapter address («16¬).
5. Press Enter.
Bottom
F3=Exit F4=Prompt F5=Refresh F10=Additional parameters F12=Cancel
F13=How to use this display F24=More keys
Parameter DEVD required. +
2. Specify values for Device description («13¬), Remote location («11¬), Local
location («3¬), Remote network identifier («9¬), and Attached controller
(«12¬).
Note: You can avoid having to create controller and device descriptions manually
by taking advantage of OS/400’s auto-configuration service. Consult the
OS/400 documentation for details.
Additional Parameters
Bottom
F3=Exit F4=Prompt F5=Refresh F12=Cancel F13=How to use this display
F24=More keys
Parameter CSI required.
2. Specify values for Side information («14¬), Remote location («11¬), Transaction
program («15¬), Local location («3¬), Mode, and Remote network identifier
(«9¬).
3. Press Enter.
Bottom
F3=Exit F4=Prompt F5=Refresh F12=Cancel F13=How to use this display
F24=More keys
Parameter SBSD required.
2. Specify values for Subsystem description («5¬) and Device («13¬), and press
Enter.
Bottom
F3=Exit F4=Prompt F5=Refresh F12=Cancel F13=How to use this display
F24=More keys
2. Specify values for Remote location name («11¬), Remote network identifier
(«9¬), Local location name («3¬), Remote control point («10¬), and Control
point net ID («9¬).
3. Press Enter.
Bottom
F3=Exit F4=Prompt F5=Refresh F12=Cancel F13=How to use this display
F24=More keys
2. Specify this machine’s Internet address and Line description, and a Subnet
mask.
3. Press Enter.
Bottom
F3=Exit F4=Prompt F5=Refresh F12=Cancel F13=How to use this display
F24=More keys
2. Specify the values for Internet address, Line description, and Subnet mask.
Bottom
F3=Exit F4=Prompt F5=Refresh F12=Cancel F13=How to use this display
F24=More keys
Command prompting ended when user pressed F12.
2. Fill in with values appropriate to your network and press Enter to create a
default route entry.
What next?
The TCP connection is now established. You are ready to complete the
configuration. Go to “MQSeries for AS/400 configuration” on page 471.
Note: AMQ* errors are placed in the log relating to the job that found the error.
Use the WRKACTJOB command to display the list of jobs. Under the
subsystem name QSYSWRK, locate the job and enter 5 against it to work
with that job. MQSeries logs are prefixed ‘AMQ’.
Basic configuration
1. First you need to create a queue manager. To do this, type CRTMQM and press
Enter.
Bottom
F3=Exit F4=Prompt F5=Refresh F12=Cancel F13=How to use this display
F24=More keys
2. In the Message Queue Manager name field, type AS400. In the Undelivered
message queue field, type DEAD.LETTER.QUEUE.
3. Press Enter.
4. Now start the queue manager by entering STRMQM MQMNAME(AS400).
5. Create the undelivered message queue using the following parameters. (For
details and an example refer to “Defining a queue” on page 475.)
Local Queue
Queue name : DEAD.LETTER.QUEUE
Queue type : *LCL
Channel configuration
This section details the configuration to be performed on the OS/400 queue
manager to implement the channel described in Figure 32 on page 97.
For details and examples of how to create the objects listed refer to “Defining a
queue” on page 475 and “Defining a channel” on page 476.
Table 43. Configuration worksheet for MQSeries for AS/400
ID Parameter Name Reference Example Used User Value
Definition for local node
«A¬ Queue Manager Name AS400
«B¬ Local queue name AS400.LOCALQ
Connection to MQSeries for OS/2 Warp
The values in this section of the table must match those used in Table 15 on page 164, as indicated.
«C¬ Remote queue manager name «A¬ OS2
«D¬ Remote queue name OS2.REMOTEQ
«E¬ Queue name at remote system «B¬ OS2.LOCALQ
«F¬ Transmission queue name OS2
«G¬ Sender (SNA) channel name AS400.OS2.SNA
«H¬ Sender (TCP) channel name AS400.OS2.TCP
«I¬ Receiver (SNA) channel name «G¬ OS2.AS400.SNA
«J¬ Receiver (TCP) channel name «H¬ OS2.AS400.TCP
Connection to MQSeries for Windows NT
The values in this section of the table must match those used in Table 17 on page 185, as indicated.
«C¬ Remote queue manager name «A¬ WINNT
«D¬ Remote queue name WINNT.REMOTEQ
«E¬ Queue name at remote system «B¬ WINNT.LOCALQ
«F¬ Transmission queue name WINNT
«G¬ Sender (SNA) channel name AS400.WINNT.SNA
«H¬ Sender (TCP/IP) channel name AS400.WINNT.TCP
«I¬ Receiver (SNA) channel name «G¬ WINNT.AS400.SNA
«J¬ Receiver (TCP/IP) channel name «H¬ WINNT.AS400.TCP
Connection to MQSeries for AIX
The values in this section of the table must match those used in Table 21 on page 211, as indicated.
«C¬ Remote queue manager name AIX
«D¬ Remote queue name AIX.REMOTEQ
| The values in this section of the table must match those used in Table 22 on page 216, as indicated.
| «C¬ Remote queue manager name DECUX
| «D¬ Remote queue name DECUX.REMOTEQ
| «E¬ Queue name at remote system «B¬ DECUX.LOCALQ
| «F¬ Transmission queue name DECUX
| «H¬ Sender (TCP) channel name DECUX.AS400.TCP
| «J¬ Receiver (TCP) channel name «H¬ AS400.DECUX.TCP
Connection to MQSeries for HP-UX
The values in this section of the table must match those used in Table 24 on page 239, as indicated.
«C¬ Remote queue manager name HPUX
«D¬ Remote queue name HPUX.REMOTEQ
«E¬ Queue name at remote system «B¬ HPUX.LOCALQ
«F¬ Transmission queue name HPUX
«G¬ Sender (SNA) channel name AS400.HPUX.SNA
«H¬ Sender (TCP) channel name AS400.HPUX.TCP
«I¬ Receiver (SNA) channel name «G¬ HPUX.AS400.SNA
«J¬ Receiver (TCP) channel name «H¬ HPUX.AS400.TCP
Connection to MQSeries for AT&T GIS UNIX
The values in this section of the table must match those used in Table 26 on page 253, as indicated.
«C¬ Remote queue manager name GIS
«D¬ Remote queue name GIS.REMOTEQ
«E¬ Queue name at remote system «B¬ GIS.LOCALQ
«F¬ Transmission queue name GIS
«G¬ Sender (SNA) channel name AS400.GIS.SNA
«H¬ Sender (TCP) channel name AS400.GIS.TCP
«I¬ Receiver (SNA) channel name «G¬ GIS.AS400.SNA
«J¬ Receiver (TCP/IP) channel name «H¬ GIS.AS400.TCP
Connection to MQSeries for Sun Solaris
The values in this section of the table must match those used in Table 28 on page 272, as indicated.
«C¬ Remote queue manager name SOLARIS
«D¬ Remote queue name SOLARIS.REMOTEQ
«E¬ Queue name at remote system «B¬ SOLARIS.LOCALQ
«F¬ Transmission queue name SOLARIS
«G¬ Sender (SNA) channel name AS400.SOLARIS.SNA
«H¬ Sender (TCP/IP) channel name AS400.SOLARIS.TCP
«I¬ Receiver (SNA) channel name «G¬ SOLARIS.AS400.SNA
«J¬ Receiver (TCP/IP) channel name «H¬ SOLARIS.AS400.TCP
The values in this section of the table must match those used in Table 37 on page 406, as indicated.
«C¬ Remote queue manager name MVS
«D¬ Remote queue name MVS.REMOTEQ
«E¬ Queue name at remote system «B¬ MVS.LOCALQ
«F¬ Transmission queue name MVS
«G¬ Sender (SNA) channel name AS400.MVS.SNA
«H¬ Sender (TCP) channel name AS400.MVS.TCP
«I¬ Receiver (SNA) channel name «G¬ MVS.AS400.SNA
«J¬ Receiver (TCP) channel name «H¬ MVS.AS400.TCP
Connection to MQSeries for VSE/ESA
The values in this section of the table must match those used in Table 45 on page 490, as indicated.
«C¬ Remote queue manager name VSE
«D¬ Remote queue name VSE.REMOTEQ
«E¬ Queue name at remote system «B¬ VSE.LOCALQ
«F¬ Transmission queue name VSE
«G¬ Sender channel name AS400.VSE.SNA
«I¬ Receiver channel name «G¬ VSE.AS400.SNA
Remote Queue
Queue name : OS2.REMOTEQ «D¬
Queue type : *RMT
Remote queue : OS2.LOCALQ «E¬
Remote Queue Manager : OS2 «C¬
Transmission queue : OS2 «F¬
Sender Channel
Channel Name : AS400.OS2.SNA «G¬
Channel Type : *SDR
Transport type : *LU62
Connection name : OS2CPIC «14¬
Transmission queue : OS2 «F¬
Receiver Channel
Channel Name : OS2.AS400.SNA «I¬
Channel Type : *RCVR
Transport type : *LU62
Remote Queue
Queue name : OS2.REMOTEQ «D¬
Queue type : *RMT
Remote queue : OS2.LOCALQ «E¬
Remote Queue Manager : OS2 «C¬
Transmission queue : OS2 «F¬
Sender Channel
Channel Name : AS400.OS2.TCP «H¬
Channel Type : *SDR
Transport type : *TCP
Connection name : os2.tcpip.hostname
Transmission queue : OS2 «F¬
Receiver Channel
Channel Name : OS2.AS400.TCP «J¬
Channel Type : *RCVR
Transport type : *TCP
Defining a queue
Type CRTMQMQ on the command line.
Queue name . . . . . . . . . . .
Bottom
F3=Exit F4=Prompt F5=Refresh F12=Cancel F13=How to use this display
F24=More keys
Parameter QNAME required.
Fill in the two fields of this panel and press Enter. This causes another panel to
appear, with entry fields for the other parameters you have. Defaults can be taken
for all other queue attributes.
Channel name . . . . . . . . . .
Channel type . . . . . . . . . . *RCVR, *SDR, *SVR, *RQSTR
Bottom
F3=Exit F4=Prompt F5=Refresh F12=Cancel F13=How to use this display
F24=More keys
Parameter CHLNAME required.
Fill in the two fields of this panel and press Enter. Another panel is displayed on
which you can specify the values for the other parameters given earlier. Defaults
can be taken for all other channel attributes.
The example illustrates the use of TCP/IP connections. The example assumes that
channels are to be triggered to start when the first message arrives on the
transmission queue they are servicing. You must start the channel initiator in order
for triggering to work. To do this, use the STRMQMCHLI command.
Payroll Query
Payroll
query Queue remote 'PAYROLL.QUERY' processing
message
Channel
Query
Queue transmission 'QM2' QM1.TO.QM2 Queue local 'PAYROLL'
message
Reply
'SYSTEM.CHANNEL.INITQ' Queue transmission 'QM1'
message
Reply
Queue local 'PAYROLL.REPLY' QM2.TO.QM1 'SYSTEM.CHANNEL.INITQ'
message
Figure 112. The message channel example for MQSeries for AS/400
The payroll query application puts a query message to the remote queue
“PAYROLL.QUERY” defined on QM1. This remote queue definition resolves to the
The connection details are supplied in the CONNAME attribute of the sender
channel definitions.
You can see a diagram of the arrangement in Figure 112 on page 477.
All the object definitions have been provided with the TEXT attributes. The other
attributes supplied are the minimum required to make the example work. The
attributes that are not supplied take the default values for queue manager QM1.
QNAME ‘PAYROLL.QUERY’
QTYPE *RMT
TEXT ‘Remote queue for QM2’
PUTENBL *YES
TMQNAME ‘QM2’ (default = remote queue manager name)
RMTQNAME ‘PAYROLL’
RMTMQMNAME ‘QM2’
QNAME QM2
QTYPE *LCL
TEXT ‘Transmission queue to QM2’
USAGE *TMQ
PUTENBL *YES
GETENBL *YES
TRGENBL *YES
TRGTYPE *FIRST
INITQNAME SYSTEM.CHANNEL.INITQ
PRCNAME QM1.TO.QM2.PROCESS
PRCNAME QM1.TO.QM2.PROCESS
TEXT ‘Process for starting channel’
APPTYPE *OS400
APPID ‘AMQRMCLA’
USRDATA QM1.TO.QM2
| Note: From MQSeries for AS/400 V5.1 onwards, the need for a process
| definition can be eliminated by specifying the channel name in the
| TRIGDATA attribute of the transmission queue.
| Sender channel definition
The CRTMQMCHL command with the following attributes:
CHLNAME QM1.TO.QM2
CHLTYPE *SDR
TRPTYPE *TCP
TEXT ‘Sender channel to QM2’
TMQNAME QM2
CONNAME ‘9.20.9.32(1412)’
CHLNAME QM2.TO.QM1
CHLTYPE *RCVR
TRPTYPE *TCP
TEXT ‘Receiver channel from QM2’
QNAME PAYROLL.REPLY
QTYPE *LCL
TEXT ‘Reply queue for replies to query messages sent to QM2’
PUTENBL *YES
GETENBL *YES
You do not need to provide a remote queue definition to enable the replies to be
returned to QM1. The message descriptor of the message retrieved from local
queue PAYROLL contains both the reply-to queue and the reply-to queue manager
names. Therefore, as long as QM2 can resolve the reply-to queue manager name to
that of a transmission queue on queue manager QM2, the reply message can be
sent. In this example, the reply-to queue manager name is QM1 and so queue
manager QM2 simply requires a transmission queue of the same name.
All the object definitions have been provided with the TEXT attribute and are the
minimum required to make the example work. The attributes that are not supplied
take the default values for queue manager QM2.
QNAME PAYROLL
QTYPE *LCL
TEXT ‘Local queue for QM1 payroll details’
PUTENBL *YES
GETENBL *YES
QNAME QM1
QTYPE *LCL
TEXT ‘Transmission queue to QM1’
USAGE *TMQ
PUTENBL *YES
GETENBL *YES
TRGENBL *YES
TRGTYPE *FIRST
INITQNAME SYSTEM.CHANNEL.INITQ
PRCNAME QM2.TO.QM1.PROCESS
PRCNAME QM2.TO.QM1.PROCESS
TEXT ‘Process for starting channel’
APPTYPE *OS400
APPID ‘AMQRMCLA’
USRDATA QM2.TO.QM1
| Note: For MQSeries for AS/400 V5.1, the need for a process definition can
| be eliminated by specifying the channel name in the TRIGDATA
| attribute of the transmission queue.
| Sender channel definition
The CRTMQMCHL command with the following attributes:
CHLNAME QM2.TO.QM1
CHLTYPE *SDR
TRPTYPE *TCP
TEXT ‘Sender channel to QM1’
TMQNAME QM1
CONNAME ‘9.20.9.31(1411)’
CHLNAME QM1.TO.QM2
CHLTYPE *RCVR
TRPTYPE *TCP
TEXT ‘Receiver channel from QM1’
The applications can then send messages to each other. The channels are triggered
to start by the first message arriving on each transmission queue, so you do not
need to issue the STRMQMCHL command.
For details about starting a channel initiator and a listener see “Chapter 30.
Monitoring and controlling channels in MQSeries for AS/400” on page 423.
For a version of this example that uses MQSC commands, see “Chapter 25.
Message channel planning example for OS/390” on page 345.
This part of the book describes an example configuration for MQSeries for
VSE/ESA.
It describes the parameters needed for an LU 6.2 and TCP connection. Once the
connection is established, you need to define some channels to complete the
configuration. This is described in “MQSeries for VSE/ESA configuration” on
page 490.
Configuration worksheet
Use the following worksheet to record the values you will use for this
configuration. Where numbers appear in the Reference column they indicate that
the value must match that in the appropriate worksheet elsewhere in this book.
The examples that follow in this chapter refer back to the values in the ID column
of this table. The entries in the Parameter Name column are explained in
“Explanation of terms” on page 487.
Table 44. Configuration worksheet for VSE/ESA using APPC
ID Parameter Name Reference Example Used User Value
Definition for local node
«1¬ Network ID NETID
«2¬ Node name VSEPU
«3¬ Local LU name VSELU
«4¬ Local Transaction Program name MQ01 MQ01
«5¬ LAN destination address 400074511092
Connection to an OS/2 system
The values in this section of the table must match those used in the table for OS/2, as indicated.
The values in this section of the table must match those used in the table for Windows NT, as indicated.
«6¬ Connection name WNT
«7¬ Group name EXAMPLE
«8¬ Session name WNTSESS
«9¬ Netname «5¬ WINNTLU
Connection to an AIX system
The values in this section of the table must match those used in the table for AIX, as indicated.
«6¬ Connection name AIX
«7¬ Group name EXAMPLE
«8¬ Session name AIXSESS
«9¬ Netname «4¬ AIXLU
Connection to an HP-UX system
The values in this section of the table must match those used in the table for HP-UX, as indicated.
«6¬ Connection name HPUX
«7¬ Group name EXAMPLE
«8¬ Session name HPUXSESS
«9¬ Netname «5¬ HPUXLU
Connection to an AT&T GIS UNIX system
The values in this section of the table must match those used in the table for GIS UNIX, as indicated.
«6¬ Connection name GIS
«7¬ Group name EXAMPLE
«8¬ Session name GISSESS
«9¬ Netname «4¬ GISLU
Connection to a Sun Solaris system
The values in this section of the table must match those used in the table for Sun Solaris, as indicated.
«6¬ Connection name SOL
«7¬ Group name EXAMPLE
«8¬ Session name SOLSESS
«9¬ Netname «7¬ SOLARLU
Connection to an AS/400 system
The values in this section of the table must match those used in the table for AS/400, as indicated.
«6¬ Connection name AS4
«7¬ Group name EXAMPLE
«8¬ Session name AS4SESS
«9¬ Netname «3¬ AS400LU
Connection to an OS/390 or MVS/ESA system without CICS
The values in this section of the table must match those used in the table for OS/390, as indicated.
«6¬ Connection name MVS
Explanation of terms
«1¬ Network ID
This is the unique ID of the network to which you are connected. Your
system administrator will tell you this value.
«2¬ Node name
This is the name of the SSCP which owns the CICS/VSE region.
«3¬ Local LU name
This is the unique VTAM APPLID of this CICS/VSE region.
«4¬ Transaction Program name
MQSeries applications trying to converse with this queue manager will
specify a transaction name for the program to be run at the receiving end.
This will have been defined on the channel definition at the sender.
MQSeries for VSE/ESA uses a name of MQ01.
«5¬ LAN destination address
This is the LAN destination address that your partner nodes will use to
communicate with this host. It is usually the address of the 3745 on the
same LAN as the partner node.
«6¬ Connection name
This is a 4-character name by which each connection will be individually
known in CICS RDO.
«7¬ Group name
You choose your own 8-character name for this value. Your system may
already have a group defined for connections to partner nodes. Your
system administrator will give you a value to use.
«8¬ Session name
This is an 8-character name by which each session will be individually
known. For clarity we use the connection name, concatenated with ’SESS’.
«9¬ Netname
This is the LU name of the MQSeries queue manager on the system with
which you are setting up communication.
Defining a connection
1. At a CICS command line type CEDA DEF CONN(connection name)
GROUP(group name) (where connection name is «6¬ and group name is «7¬). For
example:
CEDA DEF CONN(OS2) GROUP(EXAMPLE)
2. Press Enter to define a connection to CICS.
Defining a session
1. At a CICS command line type CEDA DEF SESS(session name)
GROUP(group name) (where session name is «8¬ and group name is «7¬). For
example:
CEDA DEF SESS(OS2SESS) GROUP(EXAMPLE)
2. Press Enter to define a session for the connection.
3. In the SESSION IDENTIFIERS section of the panel specify the Connection name
(«6¬) in the Connection field and set the MOdename to #INTER.
4. In the SESSION PROPERTIES section set the Protocol to Appc and the
MAximum field to 008 , 004.
Note: If this connection group is already in use you may get severe errors
reported. If this happens, take the existing connections out of service,
retry the above group installation, and then set the connections in service
using the following commands:
a. CEMT I CONN
b. CEMT S CONN(*) OUTS
c. CEDA INS GROUP(group name)
d. CEMT S CONN(*) INS
What next?
The LU 6.2 connection is now established. You are ready to complete the
configuration. Go to “MQSeries for VSE/ESA configuration” on page 490.
The MQSeries listener program waits for remote TCP connection requests. As these
are received, the listener starts the receiver MCA to process the remote connection.
When the remote connection is received from a client program, the receiver MCA
starts the MQSeries server program.
Note: There is one MQSeries server process for each client connection.
Provided that the MQSeries listener is active and TCP is active in a VSE partition,
TCP connections can be established.
Configuring channels
Examples are given for connecting MQSeries for VSE/ESA and MQSeries for OS/2
Warp. If you wish connect to another MQSeries platform use the appropriate set of
values from the table in place of those for OS/2.
Note: The words in bold are user-specified and reflect the names of MQSeries
objects used throughout these examples. If you change the names used here,
ensure that you also change the other references made to these objects
throughout this book. All others are keywords and should be entered as
shown.
Refer to the sections “Defining a local queue” on page 493 and “Defining a remote
queue” on page 495 for details of how to create queue definitions, and “Defining a
SNA LU 6.2 sender channel” on page 497 and “Defining a SNA LU6.2 receiver
channel” on page 498 for details of how to create channels.
Table 45. Configuration worksheet for MQSeries for VSE/ESA
ID Parameter Name Reference Example Used User Value
Definition for local node
«A¬ Queue Manager Name VSE
«B¬ Local queue name VSE.LOCALQ
Connection to MQSeries for OS/2 Warp
The values in this section of the table must match those used in the worksheet table for OS/2, as indicated.
«C¬ Remote queue manager name «A¬ OS2
«D¬ Remote queue name OS2.REMOTEQ
«E¬ Queue name at remote system «B¬ OS2.LOCALQ
«F¬ Transmission queue name OS2
«G¬ Sender channel name VSE.OS2.SNA
The values in this section of the table must match those used in the worksheet table for Windows NT, as indicated.
«C¬ Remote queue manager name «A¬ WINNT
«D¬ Remote queue name WINNT.REMOTEQ
«E¬ Queue name at remote system «B¬ WINNT.LOCALQ
«F¬ Transmission queue name WINNT
«G¬ Sender channel name VSE.WINNT.SNA
«I¬ Receiver channel name «G¬ WINNT.VSE.SNA
Connection to MQSeries for AIX
The values in this section of the table must match those used in the worksheet table for AIX, as indicated.
«C¬ Remote queue manager name AIX
«D¬ Remote queue name AIX.REMOTEQ
«E¬ Queue name at remote system «B¬ AIX.LOCALQ
«F¬ Transmission queue name AIX
«G¬ Sender channel name VSE.AIX.SNA
«I¬ Receiver channel name «G¬ AIX.VSE.SNA
| Connection to MQSeries for DIGITAL UNIX (Compaq Tru64 UNIX)
| The values in this section of the table must match those used in the worksheet table for Digital UNIX, as indicated.
| «C¬ Remote queue manager name DECUX
| «D¬ Remote queue name DECUX.REMOTEQ
| «E¬ Queue name at remote system «B¬ DECUX.LOCALQ
| «F¬ Transmission queue name DECUX
| «H¬ Sender (TCP) channel name DECUX.VSE.TCP
| «I¬ Receiver channel name «J¬ VSE.DECUX.TCP
Connection to MQSeries for HP-UX
The values in this section of the table must match those used in the worksheet table for HP-UX, as indicated.
«C¬ Remote queue manager name HPUX
«D¬ Remote queue name HPUX.REMOTEQ
«E¬ Queue name at remote system «B¬ HPUX.LOCALQ
«F¬ Transmission queue name HPUX
«G¬ Sender channel name VSE.HPUX.SNA
«I¬ Receiver channel name «G¬ HPUX.VSE.SNA
Connection to MQSeries for AT&T GIS UNIX
The values in this section of the table must match those used in the worksheet table for GIS UNIX, as indicated.
«C¬ Remote queue manager name GIS
«D¬ Remote queue name GIS.REMOTEQ
«E¬ Queue name at remote system «B¬ GIS.LOCALQ
«F¬ Transmission queue name GIS
«G¬ Sender channel name VSE.GIS.SNA
«I¬ Receiver channel name «G¬ GIS.VSE.SNA
Connection to MQSeries for Sun Solaris
The values in this section of the table must match those used in the worksheet table for Sun Solaris, as indicated.
The values in this section of the table must match those used in the worksheet table for AS/400, as indicated.
«C¬ Remote queue manager name AS400
«D¬ Remote queue name AS400.REMOTEQ
«E¬ Queue name at remote system «B¬ AS400.LOCALQ
«F¬ Transmission queue name AS400
«G¬ Sender channel name VSE.AS400.SNA
«I¬ Receiver channel name «G¬ AS400.VSE.SNA
Connection to MQSeries for OS/390 or MVS/ESA without CICS
The values in this section of the table must match those used in the worksheet table for OS/390, as indicated.
«C¬ Remote queue manager name MVS
«D¬ Remote queue name MVS.REMOTEQ
«E¬ Queue name at remote system «B¬ MVS.LOCALQ
«F¬ Transmission queue name MVS
«G¬ Sender channel name VSE.MVS.SNA
«I¬ Receiver channel name «G¬ MVS.VSE.SNA
For TCP, the sender channel name «G¬ and the receiver channel name «I¬, in the
preceding table, can be VSE.sys.tcp and sys.VSE.TCP respectively.
In both cases sys represents the remote system name, for example, OS2. Therefore,
in this case, «G¬ becomes VSE.OS2.TCP and «I¬ becomes OS2.VSE.TCP.
Remote Queue
Object Type : R
Object Name : OS2.REMOTEQ «D¬
Remote QUEUE Name : OS2.LOCALQ «E¬
Remote QM Name : OS2 «C¬
Transmission Name : OS2 «F¬
Sender Channel
Channel name : VSE.OS2.SNA «G¬
Channel type : S (Sender)
Transmission queue name : OS2 «F¬
Remote Task ID : MQTP
Connection name : OS2 «6¬
Receiver Channel
Channel name : OS2.VSE.SNA «I¬
Channel type : R (Receiver)
1. Configuration
2. Operations
3. Monitoring
Option:
Maintenance Options :
1. Global System Definition
2. Queue Definitions
3. Channel Definitions
Display Options :
4. Global System Definition
5. Queue Definitions
6. Channel Definitions
Option:
PF2=Main Config PF3 = Quit PF4/ENTER = Read PF5 = Add PF6 = Update
PF9 = List PF11= Reorg. PF12= Delete
PF2=Main Config PF3 = Quit PF4/ENTER = Read PF5 = Add PF6 = Update
PF9 = List PF10= Queue PF11= Reorg. PF12= Delete
Trigger Information
Trigger Enable . . . . . . : N Y=yes, N=No
Trigger Type . . . . . . : F=First, E=Every
Maximum Trigger Starts . . : 0001
Allow Restart of Trigger : N Y=Yes, N=No
Trans ID : Term ID:
Program ID : Channel Name:
7. Specify the name of a CICS file to store messages for this queue.
8. If you are creating a transmission queue, specify a Usage Mode of T, a Program
ID of MQPSEND, and a Channel Name<«G¬>.
For a normal queue specify a Usage Mode of N.
9. Press PF5 again.
1. Configuration
2. Operations
3. Monitoring
Option:
Maintenance Options :
1. Global System Definition
2. Queue Definitions
3. Channel Definitions
Display Options :
4. Global System Definition
5. Queue Definitions
6. Channel Definitions
Option:
PF2=Main Config PF3 = Quit PF4/ENTER = Read PF5 = Add PF6 = Update
PF9 = List PF11= Reorg. PF12= Delete
PF2=Main Config PF3 = Quit PF4/ENTER = Read PF5 = Add PF6 = Update
PF9 = List PF10= Queue PF11= Reorg. PF12= Delete
6. Specify a remote queue name, remote queue manager name, and transmission
queue name.
7. Press PF5.
1. Configuration
2. Operations
3. Monitoring
Option:
Maintenance Options :
1. Global System Definition
2. Queue Definitions
3. Channel Definitions
Display Options :
4. Global System Definition
5. Queue Definitions
6. Channel Definitions
Option:
1. Configuration
2. Operations
3. Monitoring
Option:
Maintenance Options :
1. Global System Definition
2. Queue Definitions
3. Channel Definitions
Display Options :
4. Global System Definition
5. Queue Definitions
6. Channel Definitions
Option:
This part of the book is about creating installation-specific user-exit programs, and
solving problems with your MQSeries system. The description is not
platform-specific. Where some details apply only to certain platforms, this is made
clear. Most of the OS/390 information here applies equally to MVS/ESA.
Message channel agents (MCAs) can also call data-conversion exits; these are
discussed in the MQSeries Application Programming Guide.
The different types of channel-exit program are described below. Table 46 shows
the types of channel exit that are available for each channel type.
Table 46. Channel exits available for each channel type
Channel Type Message exit Message- Receive exit Security exit Send exit Auto- Transport-
retry exit definition exit retry exit
Sender U U U U U
channel
Server channel U U U U U
Cluster- U U U U U
sender channel
Receiver U U U U U U U
channel
Requester U U U U U U
channel
Cluster- U U U U U U
receiver
channel
Client- U U U
connection
channel
Server- U U U U
connection
channel
Notes:
1. The message-retry exit does not apply to MQSeries for OS/390 or MQSeries for Windows.
2. The auto-definition exit applies to V5.1 of MQSeries for AIX, AS/400, HP-UX, OS/2 Warp, Sun Solaris, and Windows NT and
MQSeries for OS/390 (cluster-sender channels only).
3. The transport-retry exit applies to MQSeries for AIX V5.1 and MQSeries for Windows V2.0 only.
Processing overview
On startup, the MCAs exchange a startup dialog to synchronize processing. Then
they switch to a data exchange that includes the security exits; these must end
successfully for the startup phase to complete and to allow messages to be
transferred.
During the message transfer phase, the sending MCA gets messages from a
transmission queue, calls the message exit, calls the send exit, and then sends the
message to the receiving MCA, as shown in Figure 115.
A p p lica tio n
MCA E xit
M e ss a ge
Q ueue tra n s m is s io n (get)
E xit
Comms
lin k Send
Figure 115. Example of a send exit at the sender end of message channel
MCA Exi t
C o mm s
l in k
Receive
Mess age
(put)
Queue Loc al
Figure 116. Example of a receive exit at the receiver end of message channel
The receiving MCA receives a message from the communications link, calls the
receive exit, calls the message exit, and then puts the message on the local queue,
as shown in Figure 116. (The receive exit can be called more than once before the
message exit is called.)
Channel security exit programs are called at the following places in an MCA’s
processing cycle:
v At MCA initiation and termination.
v Immediately after the initial data negotiation is finished on channel startup. The
receiver or server end of the channel may initiate a security message exchange
with the remote end by providing a message to be delivered to the security exit
at the remote end. It may also decline to do so. The exit program is re-invoked
to process any security message received from the remote end.
v Immediately after the initial data negotiation is finished on channel startup. The
sender or requester end of the channel processes a security message received
from the remote end, or initiates a security exchange when the remote end
cannot. The exit program is re-invoked to process all subsequent security
messages that may be received.
R e c e iv e r e x it S e n d e r e x it
In v o k e d w ith M Q X R IN IT In v o k e d w ith M Q X R IN IT
R e s p o n d s w ith M Q X C C O K R e s p o n d s w ith M Q X C C O K
In v o k e d w ith M Q X R IN IT S E C
R e s p o n d s w ith M Q X C C O K
In v o k e d w ith M Q X R IN IT S E C
R e s p o n d s w ith M Q X C C S E N D S E C M S G
In v o k e d w ith M Q X R S E C M S G
R e s p o n d s w ith M Q X C C O K
In v o k e d w ith M Q X R S E C M S G
R es po nds w ith M Q X C C S U P P R E S S F U N C T IO N
C ha n n e l c l o s e s
In v o k e d w ith M Q X R T E R M In v o k e d w ith M Q X R T E R M
R e s p o n d s w ith M Q X C C O K R e s p o n d s w ith M Q X C C O K
Channel closes
The security exit program at both the sending and receiving end of the message
channel may return one of four response codes to any call:
v Security exchange ended with no errors
v Suppress the channel and close down
v Send a security message to the corresponding security exit at the remote end
v Send a security message and demand a reply (this does not apply on OS/390
when using CICS)
Notes:
1. The channel security exits usually work in pairs. When you define the
appropriate channels, make sure that compatible exit programs are named for
both ends of the channel.
| 2. In OS/400, security exit programs that have been compiled with “Use adopted
| authority” (USEADPAUT=*YES) have the ability to adopt QMQM or
| QMQMADM authority. Take care that the exit does not exploit this feature to
| pose a security risk to your system.
Channel send and receive exit programs are called at the following places in an
MCA’s processing cycle:
v The send and receive exit programs are called for initialization at MCA initiation
and for termination at MCA termination.
v The send exit program is invoked at either end of the channel, immediately
before a transmission is sent over the link.
v The receive exit program is invoked at either end of the channel, immediately
after a transmission has been taken from the link.
Note: For MQSeries for OS/390 using CICS, only the security exit is called at
MCA initiation; other exits are called with the ExitReason parameter set to
MQXR-INIT when the first message is sent across the channel.
There may be many transmissions for one message transfer, and there could be
many iterations of the send and receive exit programs before a message reaches the
message exit at the receiving end.
The channel send and receive exit programs are passed an agent buffer containing
the transmission data as sent or received from the communications link. For send
exit programs, the first eight bytes of the buffer are reserved for use by the MCA,
and must not be changed. If the program returns a different buffer, then these first
eight bytes must exist in the new buffer. The format of data presented to the exit
programs is not defined.
A good response code must be returned by send and receive exit programs. Any
other response will cause an MCA abnormal end (abend).
V5.1 of MQSeries for AIX, HP-UX, OS/2 Warp, Sun Solaris, and Windows NT and
the MQSeries client for Windows 95 and Windows 98 supply send and receive exit
programs that use the DCE encryption security services. See “Supplied channel-exit
programs using DCE security services” on page 537.
Notes:
1. Send and receive exits usually work in pairs. For example a send exit may
compress the data and a receive exit decompress it, or a send exit may encrypt
the data and a receive exit decrypt it. When you define the appropriate
channels, make sure that compatible exit programs are named for both ends of
the channel.
2. Channel send and receive exits may be called for message segments other than
for application data, for example, status messages. They are not called during
the startup dialog, nor the security check phase.
3. Although message channels send messages in one direction only,
channel-control data flows in both directions, and these exits are available in
both directions, also. However, some of the initial channel startup data flows
are exempt from processing by any of the exits.
4. There are circumstances in which send and receive exits could be invoked out
of sequence; for example, if you are running a series of exit programs or if you
are also running security exits. Then, when the receive exit is first called upon
to process data, it may receive data that has not passed through the
corresponding send exit. If the receive exit were just to perform the operation,
for example decompression, without first checking that it was really required,
the results would be unexpected.
You should code your send and receive exits in such a way that the receive exit
can check that the data it is receiving has been processed by the corresponding
send exit. The recommended way to do this is to code your exit programs so
that:
v The send exit sets the value of the ninth byte of data to 0 and shifts all the
data along one byte, before performing the operation. (The first eight bytes
are reserved for use by the MCA.)
v If the receive exit receives data that has a 0 in byte 9, it knows that the data
has come from the send exit. It removes the 0, performs the complementary
operation, and shifts the resulting data back by one byte.
v If the receive exit receives data that has something other than 0 in byte 9, it
assumes that the send exit has not run, and sends the data back to the caller
unchanged.
| When using security exits, if the channel is ended by the security exit it is
| possible that a send exit may be called without the corresponding receive exit.
| One way to prevent this from being a problem is to code the security exit to set
| a flag, in MQCD.SecurityUserData or MQCD.SendUserData, for example, when
| the exit decides to end the channel. Then the send exit should check this field,
| and process the data only if the flag is not set. This prevents the send exit from
| unnecessarily altering the data, and thus prevents any conversion errors that
| could occur if the security exit received altered data.
5. In the case of MQI channels for clients, byte 10 of message data identifies the
API call in use when the send or receive exit is called. This is useful for
identifying which channel flows include user data and may require processing
such as encryption or digital signing.
Note: These are not the only values of this byte. There are other reserved
values.
Table 47. Identifying API calls
API call Value of byte 10
MQCONN request (5a, 5b) X’81’
MQCONN reply (5a, 5b) X’91’
MQDISC request (5a) X’82’
MQDISC reply (5a) X’92’
MQOPEN request (5c) X’83’
MQOPEN reply (5c) X’93’
MQCLOSE request X’84’
MQCLOSE reply X’94’
MQGET request (5d) X’85’
MQGET reply (5d) X’95’
MQPUT request (5d) X’86’
MQPUT reply (5d) X’96’
MQPUT1 request (5d) X’87’
MQPUT1 reply (5d) X’97’
MQSET request X’88’
MQSET reply X’98’
MQINQ request X’89’
MQINQ reply X’99’
MQCMIT request X’8A’
MQCMIT reply X’9A’
MQBACK request X’8B’
MQBACK reply X’9B’
Notes:
a. The connection between the client and server is initiated by the client application using
MQCONN. Therefore, for this command in particular, there will be several other
network flows. This also applies to MQDISC that terminates the network connection.
b. MQCONNX is treated in the same way as MQCONN for the purposes of the
client-server connection.
c. If a large distribution list is opened, there may be more than one network flow per
MQOPEN call in order to pass all of the required data to the SVRCONN MCA.
d. If the message data exceeds the transmission segment size, there may be a large
number of network flows per single API call.
| In V5.1 of MQSeries for AIX, AS/400, HP-UX, OS/2 Warp, Sun Solaris, and
| Windows NT, you can specify a list of message exit programs to be run in
| succession.
Channel message exit programs are called at the following places in an MCA’s
processing cycle:
v At MCA initiation and termination
v Immediately after a sending MCA has issued an MQGET call
v Before a receiving MCA issues an MQPUT call
The message exit is passed an agent buffer containing the transmission queue
header, MQXQH, and the application message text as retrieved from the queue.
(The format of MQXQH is given in the MQSeries Application Programming Reference
book.) If you use reference messages, that is messages that contain only a header
which points to some other object that is to be sent, the message exit recognizes
the header, MQRMH. It identifies the object, retrieves it in whatever way is
appropriate appends it to the header, and passes it to the MCA for transmission to
the receiving MCA. At the receiving MCA, another message exit recognizes that
this is a reference message, extracts the object, and passes the header on to the
destination queue. See the MQSeries Application Programming Guide for more
information about reference messages and some sample message exits that handle
them.
This exit is also called at the receiving end of the channel at MCA initiation and
termination.
The exit is invoked for all reason codes; the exit determines for which reason codes
it wants the MCA to retry, for how many times, and at what intervals. (The value
of the message-retry count set when the channel was defined is passed to the exit
in the MQCD, but the exit can ignore this.)
The MsgRetryCount field in MQCXP is incremented by the MCA each time the exit
is invoked, and the exit returns either MQXCC_OK with the wait time contained in
the MsgRetryInterval field of MQCXP, or MQXCC_SUPPRESS_FUNCTION. Retries
continue indefinitely until the exit returns MQXCC_SUPPRESS_FUNCTION in the
ExitResponse field of MQCXP. See “MQCXP - Channel exit parameter structure” on
page 591 for information about the action taken by the MCA for these completion
codes.
| If all the retries are unsuccessful, the message is written to the dead-letter queue. If
| there is no dead-letter queue available, the channel stops.
If you do not define a message-retry exit for a channel and a failure occurs that is
likely to be temporary, for example MQRC_Q_FULL, the MCA uses the
message-retry count and message-retry intervals set when the channel was defined.
If the failure is of a more permanent nature and you have not defined an exit
program to handle it, the message is written to the dead-letter queue.
| The channel auto-definition exit can also be called when a request is received to
| start a cluster-sender channel. It can be called for cluster-sender and
| cluster-receiver channels to allow definition modification for this instance of the
| channel. In this case, the exit applies to MQSeries for OS/390 as well as V5.1 of
MQCD contains the values that are used in the default channel definition if they
are not altered by the exit. The exit may modify only a subset of the fields; see
“MQ_CHANNEL_AUTO_DEF_EXIT - Channel auto-definition exit” on page 551.
However, attempting to change other fields does not cause an error.
The transport-retry exit can be associated with a monitor program that can assess
whether the IP connection is available for sending data. The exit has to be built
into a library that is included in the path in which you are operating.
The exit is normally called before a datagram is about to be sent but is also called
to provide other useful signals.
There are three possible return codes that can be set when returning from the exit:
v MQXCC_OK — this is the normal response.
Note: If the datagram fails to arrive at the remote node, for any reason, you
must repeat the request on the next datagram that is sent.
The transport-retry exit name can be defined by the user, who can also change the
name of the library that contains the exit. You configure the retry exit by editing
the qm.ini file. A qm.ini file exists on both MQSeries for AIX V5.1 and MQSeries
for Windows V2.0. For more information about editing these files, see the MQSeries
System Administration book.
If the channel definition does not contain a user-exit program name, the user exit is
not called.
The channel auto-definition exit is the property of the queue manager, not the
individual channel. In order for this exit to be called, it must be named in the
queue manager definition. To alter a queue manager definition, use the MQSC
command ALTER QMGR.
User exits and channel-exit programs are able to make use of all MQI calls, except
as noted in the sections that follow. To get the connection handle, an MQCONN
must be issued, even though a warning, MQRC_ALREADY_CONNECTED, is
returned because the channel itself is connected to the queue manager.
| For exits on client-connection channels, the queue manager to which the exit tries
| to connect, depends on how the exit was linked. If the exit was linked with
| MQM.LIB (or QMQM/LIBMQM on OS/400) and you do not specify a queue
| manager name on the MQCONN call, the exit will try to connect to the default
| queue manager on your system. If the exit was linked with MQM.LIB (or
| QMQM/LIBMQM on OS/400) and you specify the name of the queue manager
| that was passed to the exit through the QMgrName field of MQCD, the exit tries
| to connect to that queue manager. If the exit was linked with MQIC.LIB or any
| other library, the MQCONN call will fail whether you specify a queue manager
| name or not.
Note: You are recommended to avoid issuing the following MQI calls in
channel-exit programs:
v MQCMIT
v MQBACK
v MQBEGIN
Therefore, a channel message exit could send notification messages that will only
be committed to that queue when the batch containing the original message is
committed. So, it is possible to issue syncpoint MQI calls from a channel message
exit.
Channel-exit programs should not modify the Channel data structure (MQCD).
They can actually change the BatchSize parameter and a security exit can set the
MCAUserIdentifier parameter, but ChannelType and ChannelName must not be
changed.
All exits are called with a channel exit parameter structure (MQCXP), a channel
definition structure (MQCD), a prepared data buffer, data length parameter, and
buffer length parameter. The buffer length must not be exceeded:
v For message exits, you should allow for the largest message required to be sent
across the channel, plus the length of the MQXQH structure.
v For send and receive exits, the largest buffer you should allow for is as follows:
LU 6.2:
OS/2 64 KB
Others 32 KB
TCP:
AS/400 16 KB
Others 32 KB
UDP:
32 KB
NetBIOS:
DOS 4 KB
Others 64 KB
SPX:
64 KB
Note: Receive exits on sender channels and sender exits on receiver channels
use 2 KB buffers for TCP.
v For security exits, the distributed queuing facility allocates a buffer of 4000
bytes.
v On OS/390 using CICS, all exits use the maximum transmission length for the
channel, defined in the channel definition.
It is permissible for the exit to return an alternate buffer, together with the relevant
| parameters. See “MQ_CHANNEL_EXIT - Channel exit” on page 546 for call details.
| Note: Before using a channel-exit program for the first time on V5.1 of MQSeries
| for AIX, AS/400, HP-UX, OS/2 Warp, Sun Solaris, and Windows NT, you
| should relink it with threaded libraries to make it thread-safe.
The link-edited modules must be placed in the data set specified by the CSQXLIB
DD statement of the channel initiator address space procedure; the names of the
load modules are specified as the exit names in the channel definition.
When writing channel exits for OS/390 without CICS, the following rules apply:
v Exits must be written in assembler or C; if C is used, it must conform to the C
systems programming environment for system exits, described in the OS/390
C/C++ Programming Guide.
v Exits are loaded from the non-authorized libraries defined by a CSQXLIB DD
statement. Providing CSQXLIB has DISP=SHR, exits can be updated while the
channel initiator is running, with the new version used when the channel is
restarted.
v Exits must be reentrant, and capable of running anywhere in virtual storage.
v Exits must reset the environment, on return, to that at entry.
v Exits must free any storage obtained, or ensure that it will be freed by a
subsequent exit invocation.
For storage that is to persist between invocations, use the OS/390 STORAGE
service; there is no suitable service in C.
v All MQI calls except MQCMIT/CSQBCMT and MQBACK/CSQBBAK are
allowed. They must be contained between MQCONN (with a blank queue
manager name) and MQDISC, although not necessarily in the same exit
invocation. If these calls are used, the exit must be link-edited with the stub
CSQXSTUB.
The exception to this rule is that security channel exits may issue commit and
backout MQI calls. To do this, code the verbs CSQXCMT and CSQXBAK in
place of MQCMIT/CSQBCMT and MQBACK/CSQBBAK.
v Exits should not use any system services that could cause a wait, because this
would severely impact the handling of some or all of the other channels. Many
channels are run under a single TCB typically, if you do something in an exit
that causes a wait and you do not use MQXWAIT, it will cause all these
channels to wait. This will not give any functional problems, but might have an
adverse effect on performance. Most SVCs involve waits, so you should avoid
them, except for the following:
– GETMAIN/FREEMAIN/STORAGE
– LOAD/DELETE
In general, therefore, SVCs, PCs, and I/O should be avoided. Instead, the
MQXWAIT call should be used.
v Exits should not issue ESTAEs or SPIEs, apart from in any subtasks they attach.
This is because their error handling might interfere with the error handling
performed by MQSeries. This means that MQSeries might not be able to recover
from an error, or that your exit program might not receive all the error
information.
The following exit samples are provided with MQSeries for OS/390:
CSQ4BAX0
This sample is written in assembler, and illustrates the use of MQXWAIT.
CSQ4BCX1 and CSQ4BCX2
These samples are written in C and illustrate how to access the parameters.
User-exit programs can also make use of CICS API calls, but you should not issue
syncpoints because the results could influence units of work declared by the MCA.
| Observe the following conditions when creating and compiling an exit program:
| v The program must be made thread safe and created with the C/400, ILE
| RPG/400, or ILE COBOL/400 compiler. For ILE RPG you must specify the
| THREAD(*SERIALIZE) control specification, and for ILE COBOL you must
| specify SERIALIZE for the THREAD option of the PROCESS statement. The
| programs must also be bound to the threaded MQSeries libraries:
| QMQM/LIBMQM_R in the case of C/400 and ILE RPG/400, and AMQ0STUB_R
| in the case of ILE COBOL/400. For additional information about making RPG or
| COBOL applications thread safe, refer to the appropriate Programmer’s Guide
| for the language.
Define a dummy MQStart() routine in the exit and specify MQStart as the entry
point in the shared library. Figure 121 shows how to set up entry to your program:
#include <cmqc.h>
#include <cmqxc.h>
Figure 122 on page 523 shows a sample definition file that gives the entry point to
the exit program.
PROTMODE
HEAPSIZE 4096
STACKSIZE 8192
EXPORTS
csqos2it;
Use a make file like the one shown in Figure 123 to compile and link your
program to create the DLL.
.SUFFIXES:
CSQOS2IT.DLL: \
csqos2it.OBJ \
MAKEOS2
ICC.EXE @<<
/Fe"CSQOS2IT.DLL" mqm.lib csqos2it.def
csqos2it.OBJ
<<
IMPLIB CSQOS2IT.LIB CSQOS2IT.DLL
{.}.c.obj:
ICC.EXE /Ge- /G5 /C .\$*.c
{.}.cpp.obj:
ICC.EXE /Ge- /G5 /C .\$*.cpp
{.}.cxx.obj:
ICC.EXE /Ge- /G5 /C .\$*.cxx
!include MAKEOS2.DEP
#include <cmqc.h>
#include <cmqxc.h>
Figure 124. Sample source code for a channel exit on Windows 3.1
Define a dummy MQStart() routine in the exit and specify MQStart as the entry
point in the library. Figure 125 on page 525 shows how to set up an entry to your
program:
Figure 125. Sample source code for a channel exit on Windows NT, Windows 95, or
Windows 98
/*
. Variable definitions */
.
.
PMQCXP pParms;
. PMQCD pChDef;
.
.
/*
. Code */
.
.
pParms = (PMQCXP)pChannelExitParms;
pChDef = (PMQCD)pChannelDefinition;
The pointers pParms and pChDef can then be dereferenced to access individual
fields.
When writing channel exits for these products using Visual C++, you should do
the following:
v Add MQMVX.LIB to project as a source file10.
v Change the box labelled “Use Run-Time Library” from “Multithreaded” to
“Multithreaded using DLL” in the project settings under C/C++ code
generation.
v Do not change the box labelled “Entry-Point Symbol”. This box can be found in
the project settings, under the Link tab, when you select Category and then
Output.
v Write your own .DEF file; an example of this is shown in Figure 126 on page 526.
10. MQMVX.LIB is used for data conversion and is not available on client products.
PROTMODE
HEAPSIZE 4096
STACKSIZE 8192
EXPORTS Retry
Figure 126. Sample DEF file for Windows NT, Windows 95, Windows 98, or Windows
#include <cmqc.h>
#include <cmqxc.h>
When writing channel exits for MQSeries for Windows using Visual C++, you
should do the following:
v Change the box labelled “Use Run-Time Library” from “Multithreaded” to
“Multithreaded using DLL” in the project settings under C/C++ code
generation.
v Do not change the box labelled “Entry-Point Symbol”. This box can be found in
the project settings, under the Link tab, when you select Category and then
Output.
v Write your own .DEF file; an example of this is shown in Figure 126.
| The exit is a dynamically loaded object that must be written in C. To ensure that it
| can be loaded when required, specify the full path name in the DEFINE
| CHANNEL command or enter the path name in the ExitPath stanza of the QM.INI
| file. If the exit is on an AIX client, specify the path name in the ClientExitPath
Define a dummy MQStart() routine in the exit and specify MQStart as the entry
point in the module. Figure 128 shows how to set up an entry to your program:
#include <cmqc.h>
#include <cmqxc.h>
Figure 129 shows the compiler and loader commands for channel-exit programs on
AIX.
$ cc -c exit.c
$ ld -o exit exit.o -bE:exit.exp -H512 -T512 -e MQStart -bM:SRE
$ cp exit /usr/xmp/lib # (or wherever you require)
Figure 129. Sample compiler and loader commands for channel exits on AIX
#!
csqaixit
MQStart
MQIDIR = /usr/mqm
MQILIBDIR = $(MQIDIR)/lib
MQIINCDIR = $(MQIDIR)/inc
LIBEXIT = -lmqm
CFLAGS = -g -bloadmap:muck
ALL : CSQAIXIT
csqaixit: csqaixit.o
xlc -L $(MQILIBDIR) $(LIBEXIT) csqaixit.o -o csqaixit \
-bE:csqaixit.exp -H512 -T512 -e MQStart -bM:SRE
csqaixit.o : csqaixit.c
xlc -c csqaixit.c \
-I $(MQIINCDIR)
User exits must be installed as known images. Figure 132 shows how to set up an
entry to your program:
#include <cmqc.h>
#include <cmqxc.h>
Figure 132. Sample source code for a channel exit on Digital OVMS
On AXP:
SYS$SHARE:MQM/SHAREABLE
SYMBOL_VECTOR=(MQSTART=PROCEDURE)
On VAX:
SYS$SHARE:MQM/SHAREABLE
UNIVERSAL=MQSTART
If you are using threaded applications linked with the pthread library, you must
also build a second copy of the exit with the thread options and libraries:
$ CC /INCLUDE_DIRECTORY=MQS_INCLUDE exitname.C
$ LINK /SHARE=SYS$SHARE:MYFORMAT exitname.OBJ,MYFORMAT/OPTIONS
Again, the contents of MYFORMAT.OPT vary depending on what platform you are
working on:
On AXP:
SYS$SHARE:MQM_R/SHAREABLE
SYS$SHARE:CMA$OPEN_RTL.EXE/SHAREABLE
SYMBOL_VECTOR’-(MQSTART=PROCEDURE)
On VAX:
SYS$SHARE:MQM_R/SHAREABLE
SYS$SHARE:CMA$OPEN_RTL.EXE/SHAREABLE
UNIVERSAL=MQSTART
Figure 133. Sample source code for a channel exit on DIGITAL UNIX
| Figure 134 shows the compiler and loader commands for channel-exit programs on
| DIGITAL UNIX.
|
$ cc -stdl -c -I/opt/mqm/inc exit.c
$ ld -o exit exit.o -shared -L/opt/mqm/lib -lmqm -e MQStart -lc
$ cp exit /usr/lib
Figure 134. Sample compiler and loader commands for channel exits on DIGITAL UNIX
| The exit is a dynamically loaded object that must be written in C. To ensure that it
| can be loaded when required, specify the full path name in the DEFINE
| CHANNEL command or enter the path name in the ExitPath stanza of the QM.INI
| file. If the exit is on an HP-UX client, specify the path name in the ClientExitPath
| stanza of the MQS.INI file. The value in the ExitPath stanza of the QM.INI file or
| the ClientExitPath stanza of the MQS.INI file defaults to /var/mqm/exits. You can
| change this value or you can override it by specifying a full path name on the
| DEFINE CHANNEL command.
Define a dummy MQStart() routine in the exit and specify MQStart as the entry
point in the module. Figure 135 on page 531 shows how to set up an entry to your
program:
Figure 136 shows the compiler and loader commands for channel-exit programs on
HP-UX.
$ cc -c +z exit.c
$ ld -o exit exit.o +b : -c exit.exp +I MQStart -b
$ cp exit /usr/xmp/lib # (or wherever you require)
Figure 136. Sample compiler and loader commands for channel exits on HP-UX
#include <cmqc.h>
#include <cmqxc.h>
Figure 137. Sample source code for a channel exit on AT&T GIS UNIX
Figure 138 on page 532 shows the compiler and loader commands for channel-exit
programs on AT&T GIS UNIX11.
11. This platform has become NCR UNIX SVR4 MP-RAS, R3.0
Figure 138. Sample compiler and loader commands for channel exits on AT&T GIS UNIX
| The exit is a dynamically loaded object that must be written in C. To ensure that it
| can be loaded when required, specify the full path name in the DEFINE
| CHANNEL command or enter the path name in the ExitPath stanza of the QM.INI
| file. If the exit is on a Sun Solaris client, specify the path name in the
| ClientExitPath stanza of the MQS.INI file. The value in the ExitPath stanza of the
| QM.INI file or the ClientExitPath stanza of the MQS.INI file defaults to
| /var/mqm/exits. You can change this value or you can override it by specifying a
| full path name on the DEFINE CHANNEL command.
Define a dummy MQStart() routine in the exit and specify MQStart as the entry
point in the module. Figure 139 shows how to set up an entry to your program:
#include <cmqc.h>
#include <cmqxc.h>
Figure 139. Sample source code for a channel exit on Sun Solaris
Figure 140 shows the compiler and loader commands for channel-exit programs on
Sun Solaris.
$ cc -c -KPIC exit.c
$ ld -G exit.o -o exit
$ cp exit /usr/xmp/lib # (or wherever you require)
Figure 140. Sample compiler and loader commands for channel exits on Sun Solaris
#include <cmqc.h>
#include <cmqxc.h>
Figure 141. Sample source code for a channel exit on SINIX and DC/OSx
Figure 142 shows the compiler and loader commands for channel-exit programs on
SINIX and DC/OSx.
Figure 142. Sample compiler and loader commands for channel exits on SINIX and DC/OSx
For DC/OSx, version cd087 and later, append the following to the cc line:
-liconv -lresolv
You replace the supplied stub function in the MCA executable images with your
own user exit code using the Tandem BIND utility BEXITE. Only the Tandem
Common Runtime Environment (CRE) interface for the WIDE memory model is
supported.
In MQSeries for Tandem NonStop Kernel, there is a single entry point for all
channel exits. In other MQSeries Version 2 products, there are entry points specific
to each channel type and function. It is possible to use channel-exit programs
written for other MQSeries Version 2 products by calling those programs from
MQ_CHANNEL_EXIT(). To determine the type of exit being called, examine the
ExitId field of MQCXP, then extract the associated exit-program name from the
MsgExit, MsgRetryExit, ReceiveExit, SendExit, or SecurityExit field of MQCD.
The channel attributes that define the names of user exits are:
If these channel attributes are left blank, the channel user exit is not invoked. If
any of the channel attributes is nonblank, the MQ_CHANNEL_EXIT() user exit
program is invoked for the corresponding function. Note that the text-string value
of the channel attribute is not used to determine the name of the user exit
program, since only a single entry point, MQ_CHANNEL_EXIT(), is supported in
MQSeries for Tandem NonStop Kernel. However, the values of these channel
attributes are passed to MQ_CHANNEL_EXIT() in the MQCD (channel data)
structure. The function of the channel exit (that is, whether the exit corresponds to
a Message, Message-retry, Receive, Security or Send Exit) is passed to
MQ_CHANNEL_EXIT() in the ExitId field of the MQCXP (Channel Exit
Parameters) structure.
MQSeries for Tandem NonStop Kernel does not support the following channel
attributes:
v CICS Profile Name
v Sequential delivery
v Target system identifier
v Transaction identifier
v Maximum transmission size
| Note: This procedure modifies the target executable. Therefore, you are
| recommended to make a backup copy of the target executable or library
| before using the macro.
| The function CHANNELEXIT must handle each of the possible exit calls (security,
| message-retry, message, send, and receive). You may write your own functions to
| do this.
| Use the TACL macro BCHXALL to bind the data conversion exit into all required
| MQSeries processes. For example:
| BCHXALL source-exit-file-or-library
The programs are supplied in source and object format. You can use the objects as
they stand, or can use the source as the basis for creating your own user-exit
programs. You should bear in mind that whereas the objects are supplied as
working programs, the source code does not include any provision for tracing or
error handling. If you chose to modify and use the source code, you should add
your own tracing and error-handling routines.
A secure connection between two security exit programs, one for the sending MCA
and one for the receiving MCA, is established after the underlying session has
been established. The sequence of operations is as follows:
1. Each program is associated with a particular principal, for example due to an
explicit DCE Login.
2. The program that initiates the secure connection, that is the first program to get
control after the MCA session has been established, is known as the Context
Initiator. The context initiator requests a secure connection with the named
partner from the DCE security server and receives a token. The token (called
token1 in Figure 143 on page 538) is sent, using the already established
underlying session, to the partner program.
3. The partner program (known as the Context Acceptor) passes token1 to the DCE
security server, which verifies that the Context Initiator is authentic. For mutual
authentication, as implemented by the supplied security exit, the DCE security
server also generates a second token (called token2 in Figure 143 on page 538),
which the Context Acceptor returns to the Context Initiator using the
underlying session.
4. The Context Initiator uses token2 to verify that the Context Acceptor is
authentic.
At this stage, if both applications are satisfied with the authenticity of the
partner’s token, then the secure (authenticated) connection is established.
gss_acquire_cred(name1)
gss_init_sec_context
(name2) ->token1
INIT_SEC(token1)
gss_accept_sec_context
(token1) ->token2
ACC_SEC(token2)
gss_init_sec_context
(name2)
Clearly the encryption algorithm used by the send exit must match the decryption
algorithm used by the receive exit. The supplied send, receive, and message exits
use the gss_seal() and gss_unseal() calls to encrypt and decrypt data. The qop_req
parameter on the gss_seal() call is set to GSS_C_QOP_DEFAULT. The encryption
provided by DCE depends on the DCE product installed. The supplied encrypting
exits work correctly only when used with US-domestic DCE products supporting
DES encryption. See the MQSeries Planning Guide for information about which DCE
products are supported.
The send, receive, and message exits are all used for encryption. The difference is
that the message exit encrypts only the content of the message, whereas the send
and receive exits also encrypt the message headers. Therefore, the message exit
offers slightly better performance but at the expense of unencrypted header data.
The code interfaces to DCE through the DCE GSS API provided as part of OSF
DCE 1.1. This API provides a superset of the standard GSS API calls as specified in
Internet RFCs 1508 and 1509. Some DCE-specific GSS calls have been added to the
API by OSF.
The principal of an MQSeries system that has a queue manager is the queue
manager name.
It is important that queue manager names or user IDs that are to be used as DCE
principals are syntactically acceptable to DCE; see your DCE documentation for
information about valid DCE principal names. If the name is to be used only
within the local cell directory, the only mismatch between the allowable characters
in a queue manager name and the allowable characters in a principal name is that
a principal name cannot contain a ‘/’. If there is any likelihood that the name will
also need to be reflected in a global directory, you are recommended to restrict
principal names to alphanumeric characters. As with any DCE principal, when you
create it you must define it to the DCE security server and must also put an entry
for it in the relevant keytable file. Therefore, when you delete a queue manager
that is also a DCE principal you must remember to delete both its entries.
The flows shown in Figure 143 on page 538 occur to establish the security context.
As a part of these flows the initiator’s principal is transferred to the acceptor.
If the MCA forms part of an MQSeries server system connected to a client, the
security exchange will have caused the client principal to flow to the server. If the
value is valid with regard to the optional restricted-channel check and the
MCAUserIdentifier variable is not already defined, the client principal is copied
into the server’s MCAUserIdentifier variable. Note that client principals may be
longer than the 12-character MCAUserIdentifier. Only the first 12 characters of
such a remote principal are copied.
Thus the first 12 characters of the MQSeries client’s DCE principal name can
become the user identifier to be used by the server’s MCA for authorization for
that client to access MQSeries resources. The server system must be set up
appropriately to allow this to work.
To use the supplied channel-exit programs you need to install DCE and define
some channels. For installation information, see the Quick Beginnings book for your
platform:
v The MQSeries for AIX, V5.1 Quick Beginnings book.
v The MQSeries for HP-UX, V5.1 Quick Beginnings book.
v The MQSeries for Sun Solaris, V5.1 Quick Beginnings book.
v The MQSeries for OS/2 Warp, V5.1 Quick Beginnings book.
v The MQSeries for Windows NT, V5.1 Quick Beginnings book.
Note: Using IBM DCE for Windows 95 V1, you cannot use the supplied DCE
security exit from a Windows 95 client connected to an MQSeries for HP-UX
server or an MQSeries for Sun Solaris server. Nor can you use the supplied
send and receive exits from a Windows 95 client when using IBM DCE for
Windows 95 V1.
Once the DCE cell has been configured, it is necessary to define the principals that
the exit is going to use to DCE. DCE setup samples are provided on all the
supported platforms. The samples are primarily intended for setting up DCE for
the DCE Names installable component. They also contain comments indicating
how they can be modified to set up the DCE security principals instead of, or as
well as, the Names principal.
When the supplied channel-exit programs are called for a particular principal, they
look in a keytable file that has the same name as the principal itself. Therefore, the
keytable file for a particular principal must have the same name as that principal.
The use of separate keytables for each principal is recommended in the OSF DCE
literature. On systems that support file access controls (UNIX systems and
Windows NT) keytable access should be limited to:
v Superuser/administrator: no restriction
v Other user IDs:
– read only access, given only to the user IDs under which the processes that
call the security exits run, and only to the relevant keytables.
In the case of queue manager MQSeries systems, the processes that interface to the
security exits at the sending end of the channel are runmqchl (and runmqchi on
OS/2 and Windows NT). amqcrsta, amqcrs6a or runmqlsr interface to the security
exits at the receiving end of the channel. On most systems these all run under the
mqm user ID; in this case, non-supervisor/administrator access to the keytables
relating to queue manager principals should be restricted to read access for the
mqm user ID.
On client systems the user ID under which the security exit is called is the user ID
under which the client application runs (often the login user ID of the user of the
client system). Again, non-supervisor/administrator access to the relevant keytable
should be restricted to read access by that user ID only.
If you also wish to use the message exit to support data encryption, then in your
definition of the channel, specify:
MSGEXIT('<path>amqrdsc0(DCE_SEC_SRM_CHANNELEXIT)')
Or you can use the send and receive exits to support data encryption by specifying
the following in your definition of the channel:
SENDEXIT('<path>amqrdsc0(DCE_SEC_SRM_CHANNELEXIT)')
RCVEXIT('<path>amqrdsc0(DCE_SEC_SRM_CHANNELEXIT)')
See page 520 through page 533 for information about how to call user exits on the
platform you are using.
followed by:
ld -G -L/opt/dce/share/usr/lib -ldce amqsdsc0.o -o srm
HP-UX
cc -D_HPUX_SOURCE -Dhpux -DICOL -D_REENTRANT \
-Dsigaction=cma_sigaction +ESlit +DA1.0 -c +z \
amqsdsc0.c -I /opt/mqm/include -I /opt/dce/include/dce \
-Aa && ld -o amqsdsc0 amqsdsc0.o -z +b : -b +I MQStart \
-ldce -lmqm_r -lndbm -lM -lc_r
Windows 95, Windows 98, and Windows NT
c:\msdevstd\bin\cl /DAMQ_PC /VERBOSE /LD /MT \
/Ic:\msdevstd\include /ID:\MQCLIENT\TOOLS\C\INCLUDE \
/IC:\OPT\DIGITAL\DCE\INCLUDE\DCE amqsdsc0.c \
-link /DLL /EXPORT:DCE_SEC_SCY_CHANNELEXIT \
/EXPORT:DCE_SEC_SRM_CHANNELEXIT /STACK:8192 libdce.lib \
advapi32.lib libcmt.lib
AIX
xlC_r -c /usr/mqm/samp/amqsdsc0.c -I/usr/include/dce
In a number of cases, parameters are arrays or character strings whose size is not
fixed. For these, a lowercase “n” is used to represent a numeric constant. When the
declaration for that parameter is coded, the “n” must be replaced by the numeric
value required. For further information about the conventions used in these
descriptions, see the MQSeries Application Programming Reference book.
C CMQC
COBOL CMQV
PL/I CMQP
RPG CMQR
ASM370 CMQA
C CMQXC
COBOL CMQXV
PL/I CMQXP
RPG CMQXR
ASM370 CMQXA
Where the file for the C or PL/I language is not included in the above, it has been
included in separate common files containing all C or PL/I data. For message
queuing applications the file names for C and PL/I are:
C CMQC
PL/I CMQP
C CMQXC
PL/I CMQXP
For a list of the complete set of header files for the product, see the MQSeries
Application Programming Guide, or, for MQSeries for Windows, see the MQSeries for
Windows User’s Guide.
This definition is part of the MQSeries Security Enabling Interface (SEI), which is
one of the MQSeries framework interfaces.
The parameters are similar for each type of exit, and the description given here
applies to all of them, except where specifically noted.
Syntax
MQ_CHANNEL_EXIT (ChannelExitParms, ChannelDefinition, DataLength,
AgentBufferLength, AgentBuffer, ExitBufferLength, ExitBufferAddr)
Parameters
ChannelExitParms (MQCXP) – input/output
Channel exit parameter block.
When the exit is invoked, this contains the length of data in the AgentBuffer
parameter. The exit must set this to the length of the data in either the
AgentBuffer or the ExitBufferAddr (as determined by the ExitResponse2 field
in the ChannelExitParms parameter) that is to proceed.
If a security exit sends a message, and there is no security exit at the other end
of the channel, or the other end sets an ExitResponse of MQXCC_OK, the
initiating exit is re-invoked with MQXR_SEC_MSG and a null response
(DataLength=0).
AgentBufferLength (MQLONG) – input
Length of agent buffer.
For channel message, send, and receive exits, any unused space on invocation
can be used by the exit to expand the data in place. If this is done, the
DataLength parameter must be set appropriately by the exit.
Any changes that the exit makes to the transmission queue header are not
checked; however, erroneous modifications may mean that the message
cannot be put at the destination.
v For a channel send or receive exit, on invocation of the exit this contains the
transmission data. The exit can do one of the following:
– Leave the contents of the buffer untouched
– Modify the contents in place (returning the new length of the data in
DataLength; this must not be greater then AgentBufferLength)
– Copy the contents to the ExitBufferAddr, making any required changes
On the first invocation of the exit, this is set to zero. Thereafter whatever value
is passed back by the exit, on each invocation, is presented to the exit next
time it is invoked. The value is not used by the MCA (except in MQSeries for
OS/390 using CICS for distributed queue management, where a check is made
that DataLength does not exceed ExitBufferLength, if the exit is returning data
in ExitBufferAddr).
On the first invocation of the exit, the address passed to the exit is null.
Thereafter whatever address is passed back by the exit, on each invocation, is
presented to the exit the next time it is invoked.
Usage notes
1. The function performed by the channel exit is defined by the provider of the
exit. The exit, however, must conform to the rules defined here and in the
associated control block, the MQCXP.
2. The ChannelDefinition parameter passed to the channel exit may be one of
several versions. See the Version field in the MQCD structure for more
information.
3. If the channel exit receives an MQCD structure with the Version field set to a
value greater than MQCD_VERSION_1, the exit should use the ConnectionName
field in MQCD, in preference to the ShortConnectionName field.
4. In general, channel exits are allowed to change the length of message data. This
may arise as a result of the exit adding data to the message, or removing data
from the message, or compressing or encrypting the message. However, special
restrictions apply if the message is a segment that contains only part of a
logical message. In particular, there must be no net change in the length of the
message as a result of the actions of complementary sending and receiving
exits.
For example, it is permissible for a sending exit to shorten the message by
compressing it, but the complementary receiving exit must restore the original
length of the message by decompressing it, so that there is no net change in the
length of the message.
This restriction arises because changing the length of a segment would cause
the offsets of later segments in the message to be incorrect, and this would
inhibit the queue manager’s ability to recognize that the segments formed a
complete logical message.
COBOL invocation
CALL 'exitname' USING CHANNELEXITPARMS, CHANNELDEFINITION,
DATALENGTH, AGENTBUFFERLENGTH, AGENTBUFFER,
EXITBUFFERLENGTH, EXITBUFFERADDR.
PL/I invocation
call exitname (ChannelExitParms, ChannelDefinition, DataLength,
AgentBufferLength, AgentBuffer, ExitBufferLength,
ExitBufferAddr);
This exit is supported in the following environments: AIX, HP-UX, OS/390, OS/2,
OS/400, Sun Solaris, Windows NT.
Syntax
MQ_CHANNEL_AUTO_DEF_EXIT (ChannelExitParms, ChannelDefinition)
Parameters
ChannelExitParms (MQCXP) – input/output
Channel exit parameter block.
The MQCD fields listed below must not be altered by the exit:
ChannelName
ChannelType
StrucLength
Version
If other fields are changed, the value set by the exit must be valid. If the value
is not valid, an error message is written to the error log file or displayed on
the console (as appropriate to the environment).
Usage notes
1. The function performed by the channel exit is defined by the provider of the
exit. The exit, however, must conform to the rules defined here and in the
associated control block, the MQCXP.
2. The ChannelExitParms parameter passed to the channel auto-definition exit is
an MQCXP structure. The version of MQCXP passed depends on the
environment in which the exit is running; see the description of the Version
field in “MQCXP - Channel exit parameter structure” on page 591 for details.
3. The ChannelDefinition parameter passed to the channel auto-definition exit is
an MQCD structure. The version of MQCD passed depends on the
C invocation
exitname (&ChannelExitParms, &ChannelDefinition);
COBOL invocation
CALL 'exitname' USING CHANNELEXITPARMS, CHANNELDEFINITION.
MQXWAIT - Wait
The MQXWAIT call waits for an event to occur. It can be used only from a channel
exit on OS/390 when not using CICS.
Syntax
MQXWAIT (Hconn, WaitDesc, CompCode, Reason)
Parameters
Hconn (MQHCONN) – input
Connection handle.
This handle represents the connection to the queue manager. The value of
Hconn was returned by a previous MQCONN call issued in the same or earlier
invocation of the exit.
WaitDesc (MQXWD) – input/output
Wait descriptor.
This describes the event to wait for. See “MQXWD - Exit wait descriptor
structure” on page 609 for details of the fields in this structure.
CompCode (MQLONG) – output
Completion code.
If CompCode is MQCC_OK:
MQRC_NONE
(0, X'000') No reason to report.
If CompCode is MQCC_FAILED:
MQRC_ADAPTER_NOT_AVAILABLE
(2204, X'89C') Adapter not available.
MQRC_OPTIONS_ERROR
(2046, X'7FE') Options not valid or not consistent.
MQRC_XWAIT_CANCELED
(2107, X'83B') MQXWAIT call canceled.
MQRC_XWAIT_ERROR
(2108, X'83C') Invocation of MQXWAIT call not valid.
For more information on these reason codes, see the Application Programming
Reference Manual for your platform.
This exit is supported in the following environments: AIX and 16-bit Windows.
Syntax
MQ_TRANSPORT_EXIT (ExitParms, DestAddressLength, DestAddress)
Parameters
ExitParms (MQTXP) – input/output
Exit parameter block.
This structure contains information relating to the invocation of the exit. The
exit sets information in this structure to indicate how processing should
continue.
DestAddressLength (MQLONG) – input
Length in bytes of destination IP address.
Usage notes
1. The function performed by the exit is defined by the provider of the exit. The
exit, however, must conform to the rules defined in the associated control block
MQTXP.
2. The transport retry exit allows a channel to be paused based on criteria that are
external to MQSeries.
If configured, the exit is called before each attempt to resend a failing data
packet. When called, the exit can wait based on some external criterion, and not
return control to the MCA until the exit decides that the resend of the data
packet is likely to succeed. If the exit decides that transmission should be
discontinued, the exit can instruct the MCA to close the channel.
C invocation
exitname (&ExitParms, DestAddressLength, DestAddress);
The MQCD structure contains the parameters which control execution of a channel.
It is passed to each channel exit that is called from a Message Channel Agent
(MCA). See MQ_CHANNEL_EXIT.
Fields
ChannelName (MQCHAR20)
Channel definition name.
There must be a channel definition of the same name at the remote machine to
be able to communicate.
Fields that exist only in the earlier versions of the structure are identified as
such in the field descriptions that follow. The following constant specifies the
version number of the current version:
MQCD_CURRENT_VERSION
Current version of channel definition structure.
The value of this constant depends on the environment (see above).
Note: When a new version of the MQCD structure is introduced, the layout of
the existing part is not changed. The exit should therefore check that the
version number is equal to or greater than the lowest version which
contains the fields that the exit needs to use.
ChannelType (MQLONG)
Channel type.
Note that the value will not have been checked if the channel was initiated
from the other end.
This is a field that may be used for descriptive commentary. The content of the
field is of no significance to Message Channel Agents. However, it should
contain only characters that can be displayed. It cannot contain any null
characters; if necessary, it is padded to the right with blanks. In a DBCS
installation, the field can contain DBCS characters (subject to a maximum field
length of 64 bytes).
The name of the transmission queue from which messages are retrieved.
Note: The name of this field was changed for MQCD_VERSION_2 and
subsequent versions of MQCD; the field was previously called
ConnectionName.
On OS/400, OS/390 without CICS, UNIX systems, and MQSeries for Windows,
this field is always blank. The information is contained in the communications
Side Object instead.
The maximum number of messages that can be sent through a channel before
synchronizing the channel.
The maximum time in seconds for which the channel waits for a message to
arrive on the transmission queue, before terminating the channel. A value of
zero causes the MCA to wait indefinitely.
This is the maximum number of attempts that are made to connect to the
remote machine, at intervals specified by ShortRetryInterval, before the
(normally longer) LongRetryCount and LongRetryInterval are used.
This count is used after the count specified by ShortRetryCount has been
exhausted. It specifies the maximum number of further attempts that are made
to connect to the remote machine, at intervals specified by LongRetryInterval,
before logging an error to the operator.
See above in the introduction to MQCD for a description of the content of this
field in various environments.
See above in the introduction to MQCD for a description of the content of this
field in various environments.
See above in the introduction to MQCD for a description of the content of this
field in various environments.
See above in the introduction to MQCD for a description of the content of this
field in various environments.
This value is non-negotiable and must match in both the local and remote
channel definitions.
Specifies the maximum message length that can be transmitted on the channel.
This is compared with the value for the remote channel and the actual
maximum is the lower of the two values.
PutAuthority (MQLONG)
Put authority.
Specifies whether the user identifier in the context information associated with
a message should be used to establish authority to put the message to the
destination queue.
This specifies whether the sending message channel agent should attempt
conversion of the application message data if the receiving message channel
agent is unable to perform this conversion. This applies only to messages that
are not segments of logical messages; the MCA never attempts to convert
messages which are segments.
This is passed to the channel security exit in the ExitData field of the
ChannelExitParms parameter (see MQ_CHANNEL_EXIT).
This field initially contains the data that was set in the channel definition.
However, during the lifetime of this MCA instance, any changes made to the
contents of this field by an exit of any type are preserved by the MCA, and
made visible to subsequent invocations of exits (regardless of type) for this
This is passed to the channel message exit in the ExitData field of the
ChannelExitParms parameter (see MQ_CHANNEL_EXIT).
This field initially contains the data that was set in the channel definition.
However, during the lifetime of this MCA instance, any changes made to the
contents of this field by an exit of any type are preserved by the MCA, and
made visible to subsequent invocations of exits (regardless of type) for this
MCA instance. Such changes have no effect on the channel definition used by
other MCA instances. Any characters (including binary data) can be used.
This is passed to the channel send exit in the ExitData field of the
ChannelExitParms parameter (see MQ_CHANNEL_EXIT).
This field initially contains the data that was set in the channel definition.
However, during the lifetime of this MCA instance, any changes made to the
contents of this field by an exit of any type are preserved by the MCA, and
made visible to subsequent invocations of exits (regardless of type) for this
MCA instance. Such changes have no effect on the channel definition used by
other MCA instances. Any characters (including binary data) can be used.
This is passed to the channel receive exit in the ExitData field of the
ChannelExitParms parameter (see MQ_CHANNEL_EXIT).
This field initially contains the data that was set in the channel definition.
However, during the lifetime of this MCA instance, any changes made to the
contents of this field by an exit of any type are preserved by the MCA, and
made visible to subsequent invocations of exits (regardless of type) for this
MCA instance. Such changes have no effect on the channel definition used by
other MCA instances. Any characters (including binary data) can be used.
The following fields in this structure are not present if Version is less than
MQCD_VERSION_2.
UserIdentifier (MQCHAR12)
User identifier.
This is used by the message channel agent when attempting to initiate a secure
SNA session with a remote message channel agent.
This field is not present in MQSeries for Windows or when Version is less than
MQCD_VERSION_2.
Password (MQCHAR12)
Password.
This is used by the message channel agent when attempting to initiate a secure
SNA session with a remote message channel agent.
This field can be nonblank only on OS/2, UNIX systems, and Windows NT,
and is relevant only for channels with a ChannelType of MQCHT_SENDER,
MQCHT_SERVER, MQCHT_REQUESTER or MQCHT_CLNTCONN. On
OS/390 this field is not relevant.
There are two fields that contain the MCA user identifier:
v MCAUserIdentifier contains the first 12 bytes of the MCA user identifier, and
is padded with blanks if the identifier is shorter than 12 bytes.
MCAUserIdentifier can be completely blank.
v LongMCAUserIdPtr points to the full MCA user identifier, which can be longer
than 12 bytes. Its length is given by LongMCAUserIdLength. The full identifier
contains no trailing blanks, and is not null-terminated. If the identifier is
completely blank, LongMCAUserIdLength is zero, and the value of
LongMCAUserIdPtr is undefined.
If the MCA user identifier is nonblank, it specifies the user identifier to be used
by the message channel agent for authorization to access MQSeries resources,
including (if PutAuthority is MQPA_DEFAULT) authorization to put the
message to the destination queue for receiver or requester channels.
If the MCA user identifier is blank, the message channel agent uses its default
user identifier.
The MCA user identifier can be set by a security exit to indicate the user
identifier that the message channel agent should use. The exit can change
either MCAUserIdentifier, or the string pointed at by LongMCAUserIdPtr. If both
are changed but differ from each other, the MCA uses LongMCAUserIdPtr in
preference to MCAUserIdentifier. If the exit changes the length of the string
The MCA user identifier is not relevant for channels with a ChannelType of
MQCHT_CLNTCONN.
This is an input/output field to the exit. The length of this field is given by
MQ_USER_ID_LENGTH. This field is not present on MQSeries for Windows
or when Version is less than MQCD_VERSION_2.
MCAType (MQLONG)
Message channel agent type.
This field is not present on MQSeries for Windows or when Version is less
than MQCD_VERSION_2.
ConnectionName (MQCHAR264)
Connection name.
This is the full connection name of the partner. The type of name depends on
the transmission protocol (TransportType) to be used:
v For MQXPT_LU62, it is the fully-qualified name of the partner Logical Unit.
v For MQXPT_NETBIOS, it is the NetBIOS name defined on the remote
machine.
v For MQXPT_TCP, it is either the host name, or the network address of the
remote machine.
v For MQXPT_SPX, it is an SPX-style address comprising a 4-byte network
address, a 6-byte node address, and a 2-byte socket number.
There are two fields that contain the remote user identifier:
v RemoteUserIdentifier contains the first 12 bytes of the remote user
identifier, and is padded with blanks if the identifier is shorter than 12 bytes.
RemoteUserIdentifier can be completely blank.
v LongRemoteUserIdPtr points to the full remote user identifier, which can be
longer than 12 bytes. Its length is given by LongRemoteUserIdLength. The full
identifier contains no trailing blanks, and is not null-terminated. If the
identifier is completely blank, LongRemoteUserIdLength is zero, and the value
of LongRemoteUserIdPtr is undefined.
LongRemoteUserIdPtr is not present if Version is less than
MQCD_VERSION_6.
The remote user identifier is relevant only for channels with a ChannelType of
MQCHT_CLNTCONN or MQCHT_SVRCONN.
v For a security exit on an MQCHT_CLNTCONN channel, this is a user
identifier which has been obtained from the environment (from an
environment variable on OS/2, Windows 3.1 and Windows NT, or from the
system on UNIX platforms.) The exit can choose to send it to the security
exit at the server.
v For a security exit on an MQCHT_SVRCONN channel, this field may
contain a user identifier which has been obtained from the environment at
the client, if there is no client security exit. The exit may validate this user
ID (possibly in conjunction with the password in RemotePassword) and
update the value in MCAUserIdentifier.
If there is a security exit at the client, then this information can be obtained
in a security flow from the client.
The following fields in this structure are not present if Version is less than
MQCD_VERSION_3.
MsgRetryExit (MQCHARn)
Channel message retry exit name.
The message retry exit is an exit that is invoked by the MCA when the MCA
receives a completion code of MQCC_FAILED from an MQOPEN or MQPUT
call. The purpose of the exit is to specify a time interval for which the MCA
should wait before retrying the MQOPEN or MQPUT operation. Alternatively,
the exit can decide that the operation should not be retried.
The exit is invoked for all reason codes that have a completion code of
MQCC_FAILED — it is up to the exit to decide which reason codes it wants
the MCA to retry, for how many attempts, and at what time intervals.
When the exit decides that the operation should not be retried any more, the
MCA performs its normal failure processing; this includes generating an
exception report message (if specified by the sender), and either placing the
original message on the dead-letter queue or discarding the message
(according to whether the sender specified MQRO_DEAD_LETTER_Q or
MQRO_DISCARD_MSG, respectively). Note that failures involving the
dead-letter queue (for example, dead-letter queue full) do not cause the
message-retry exit to be invoked.
If the exit name is nonblank, the exit is called at the following times:
v Immediately before performing the wait prior to retrying a message
v At initialization and termination of the channel.
See above in the introduction to MQCD for a description of the content of this
field in various environments.
This field is not present on MQSeries for Windows or when Version is less
than MQCD_VERSION_3.
MsgRetryUserData (MQCHAR32)
Channel message retry exit user data.
This is passed to the channel message-retry exit in the ExitData field of the
ChannelExitParms parameter (see MQ_CHANNEL_EXIT).
This indicates the number of times that the MCA will retry the open or put
operation, if the first MQOPEN or MQPUT fails with completion code
MQCC_FAILED. The effect of this attribute depends on whether MsgRetryExit
is blank or nonblank:
v If MsgRetryExit is blank, the MsgRetryCount attribute controls whether the
MCA attempts retries. If the attribute value is zero, no retries are attempted.
If the attribute value is greater than zero, the retries are attempted at
intervals given by the MsgRetryInterval attribute.
Retries are attempted only for the following reason codes:
MQRC_PAGESET_FULL
MQRC_PUT_INHIBITED
MQRC_Q_FULL
For other reason codes, the MCA proceeds immediately to its normal failure
processing, without retrying the failing message.
v If MsgRetryExit is nonblank, the MsgRetryCount attribute has no effect on the
MCA; instead it is the message-retry exit which determines how many times
the retry is attempted, and at what intervals; the exit is invoked even if the
MsgRetryCount attribute is zero.
The MsgRetryCount attribute is made available to the exit in the MQCD
structure, but the exit it not required to honor it — retries continue
indefinitely until the exit returns MQXCC_SUPPRESS_FUNCTION in the
ExitResponse field of MQCXP.
This field is not present on MQSeries for Windows or when Version is less
than MQCD_VERSION_3.
This field is not present on MQSeries for Windows or when Version is less
than MQCD_VERSION_3.
The following fields in this structure are not present if Version is less than
MQCD_VERSION_4.
HeartbeatInterval (MQLONG)
Time in seconds between heartbeat flows.
The value is in the range 0 through 999 999. A value of 0 means that no
heartbeat exchange occurs. The value that is actually used is the larger of the
values specified at the sending side and receiving side.
This is the approximate time in milliseconds that a channel will keep a batch
open, if fewer than BatchSize messages have been transmitted in the current
batch.
This is an input field to the exit. The field is not present when Version is less
than MQCD_VERSION_4.
NonPersistentMsgSpeed (MQLONG)
Speed at which nonpersistent messages are sent.
This specifies the speed at which nonpersistent messages travel through the
channel.
This is the length in bytes of the MQCD structure. The length does not include
any of the strings addressed by pointer fields contained within the structure.
The value is one of the following:
MQCD_LENGTH_4
Length of version-4 channel definition structure.
MQCD_LENGTH_5
Length of version-5 channel definition structure.
MQCD_LENGTH_6
Length of version-6 channel definition structure.
This is the length in bytes of each of the names in the lists of exit names
addressed by the MsgExitPtr, SendExitPtr, and ReceiveExitPtr fields. This
length is not necessarily the same as MQ_EXIT_NAME_LENGTH.
This is an input field to the exit. The field is not present if Version is less than
MQCD_VERSION_4.
ExitDataLength (MQLONG)
Length of exit user data.
This is the length in bytes of each of the user data items in the lists of exit user
data items addressed by the MsgUserDataPtr, SendUserDataPtr, and
ReceiveUserDataPtr fields. This length is not necessarily the same as
MQ_EXIT_DATA_LENGTH.
This is an input field to the exit. The field is not present if Version is less than
MQCD_VERSION_4.
MsgExitsDefined (MQLONG)
Number of message exits defined.
This is an input field to the exit. The field is not present if Version is less than
MQCD_VERSION_4.
SendExitsDefined (MQLONG)
Number of send exits defined.
This is an input field to the exit. The field is not present if Version is less than
MQCD_VERSION_4.
ReceiveExitsDefined (MQLONG)
Number of receive exits defined.
This is an input field to the exit. The field is not present if Version is less than
MQCD_VERSION_4.
MsgExitPtr (MQPTR)
Address of first MsgExit field.
If MsgExitsDefined is greater than zero, this is the address of the list of names
of each channel message exit in the chain.
Any changes made to these names by an exit are preserved, although the
message channel exit takes no explicit action – it does not change which exits
are invoked.
On platforms where the programming language does not support the pointer
data type, this field is declared as a byte string of the appropriate length.
This is an input field to the exit. The field is not present if Version is less than
MQCD_VERSION_4.
MsgUserDataPtr (MQPTR)
Address of first MsgUserData field.
If MsgExitsDefined is greater than zero, this is the address of the list of user
data items for each channel message exit in the chain.
Each user data item is in a field of length ExitDataLength, padded to the right
with blanks. There are MsgExitsDefined fields adjoining one another – one for
each exit. If the number of user data items defined is less than the number of
exit names, undefined user data items are set to blanks. Conversely, if the
number of user data items defined is greater than the number of exit names,
the excess user data items are ignored and not presented to the exit.
Any changes made to these names by an exit are preserved. This allows one
exit to pass information to another exit. No validation is carried out on any
changes so, for example, binary data can be written to these fields if required.
This is an input field to the exit. The field is not present if Version is less than
MQCD_VERSION_4.
SendExitPtr (MQPTR)
Address of first SendExit field.
If SendExitsDefined is greater than zero, this is the address of the list of names
of each channel send exit in the chain.
Any changes made to these names by an exit are preserved, although the
message send exit takes no explicit action – it does not change which exits are
invoked.
On platforms where the programming language does not support the pointer
data type, this field is declared as a byte string of the appropriate length.
This is an input field to the exit. The field is not present if Version is less than
MQCD_VERSION_4.
SendUserDataPtr (MQPTR)
Address of first SendUserData field.
If SendExitsDefined is greater than zero, this is the address of the list of user
data items for each channel message exit in the chain.
Each user data item is in a field of length ExitDataLength, padded to the right
with blanks. There are MsgExitsDefined fields adjoining one another – one for
each exit. If the number of user data items defined is less than the number of
exit names, undefined user data items are set to blanks. Conversely, if the
number of user data items defined is greater than the number of exit names,
the excess user data items are ignored and not presented to the exit.
Any changes made to these names by an exit are preserved. This allows one
exit to pass information to another exit. No validation is carried out on any
changes so, for example, binary data can be written to these fields if required.
On platforms where the programming language does not support the pointer
data type, this field is declared as a byte string of the appropriate length.
This is an input field to the exit. The field is not present if Version is less than
MQCD_VERSION_4.
ReceiveExitPtr (MQPTR)
Address of first ReceiveExit field.
Any changes made to these names by an exit are preserved, although the
message channel exit takes no explicit action – it does not change which exits
are invoked.
On platforms where the programming language does not support the pointer
data type, this field is declared as a byte string of the appropriate length.
This is an input field to the exit. The field is not present if Version is less than
MQCD_VERSION_4.
ReceiveUserDataPtr (MQPTR)
Address of first ReceiveUserData field.
Each user data item is in a field of length ExitDataLength, padded to the right
with blanks. There are ReceiveExitsDefined fields adjoining one another – one
for each exit. If the number of user data items defined is less than the number
of exit names, undefined user data items are set to blanks. Conversely, if the
number of user data items defined is greater than the number of exit names,
the excess user data items are ignored and not presented to the exit.″
Any changes made to these names by an exit are preserved. This allows one
exit to pass information to another exit. No validation is carried out on any
changes so, for example, binary data can be written to these fields if required.
On platforms where the programming language does not support the pointer
data type, this field is declared as a byte string of the appropriate length.
This is an input field to the exit. The field is not present if Version is less than
MQCD_VERSION_4.
The following fields in this structure are not present if Version is less than
MQCD_VERSION_5.
ClusterPtr (MQPTR)
Address of first cluster record.
If ClustersDefined is greater than zero, this is the address of the first cluster
record (MQWCR structure) in a chain of cluster records. Each cluster record
identifies a cluster to which the channel belongs.
This is an input field to the exit. The field is not present if Version is less than
MQCD_VERSION_5.
NetworkPriority (MQLONG)
Network priority.
This is the priority of the network connection for this channel. When multiple
paths to a particular destination are available, the path with the highest
priority is chosen. The value is in the range 0 through 9; 0 is the lowest
priority.
This is an input field to the exit. The field is not present if Version is less than
MQCD_VERSION_5.
The following fields in this structure are not present if Version is less than
MQCD_VERSION_6.
LongMCAUserIdLength (MQLONG)
Length of long MCA user identifier.
This is the length in bytes of the full MCA user identifier pointed to by
LongMCAUserIdPtr.
This is an input/output field to the exit. The field is not present if Version is
less than MQCD_VERSION_6.
LongRemoteUserIdLength (MQLONG)
Length of long remote user identifier.
This is the length in bytes of the full remote user identifier pointed to by
LongRemoteUserIdPtr.
This is an input field to the exit. The field is not present if Version is less than
MQCD_VERSION_6.
LongMCAUserIdPtr (MQPTR)
Address of long MCA user identifier.
See the description of the MCAUserIdentifier field for details of the MCA user
identifier.
This is an input/output field to the exit. The field is not present if Version is
less than MQCD_VERSION_6.
LongRemoteUserIdPtr (MQPTR)
Address of long remote user identifier.
See the description of the RemoteUserIdentifier field for details of the remote
user identifier.
This is an input field to the exit. The field is not present if Version is less than
MQCD_VERSION_6.
MCASecurityId (MQBYTE40)
MCA security identifier.
This is an input/output field to the exit. The length of this field is given by
MQ_SECURITY_ID_LENGTH. This field is not present if Version is less than
MQCD_VERSION_6.
RemoteSecurityId (MQBYTE40)
Remote security identifier.
This is an input field to the exit. The length of this field is given by
MQ_SECURITY_ID_LENGTH. This field is not present if Version is less than
MQCD_VERSION_6.
C declaration
typedef struct tagMQCD {
MQCHAR ChannelName[20]; /* Channel definition
name */
MQLONG Version; /* Structure version number */
MQLONG ChannelType; /* Channel type */
MQLONG TransportType; /* Transport type */
MQCHAR Desc[64]; /* Channel
description */
MQCHAR QMgrName[48]; /* Queue-manager
name */
MQCHAR XmitQName[48]; /* Transmission queue
name */
MQCHAR ShortConnectionName[20]; /* First 20 bytes of
connection name */
MQCHAR MCAName[20]; /* Reserved */
MQCHAR ModeName[8]; /* LU 6.2 Mode name */
MQCHAR TpName[64]; /* LU 6.2 transaction
program name */
MQLONG BatchSize; /* Batch size */
MQLONG DiscInterval; /* Disconnect interval */
MQLONG ShortRetryCount; /* Short retry count */
MQLONG ShortRetryInterval; /* Short retry wait interval */
MQLONG LongRetryCount; /* Long retry count */
MQLONG LongRetryInterval; /* Long retry wait interval */
MQCHAR SecurityExit[n]; /* Channel security
exit name */
MQCHAR MsgExit[n]; /* Channel message exit
name */
MQCHAR SendExit[n]; /* Channel send exit
name */
MQCHAR ReceiveExit[n]; /* Channel receive exit
name */
MQLONG SeqNumberWrap; /* Highest allowable message
sequence number */
MQLONG MaxMsgLength; /* Maximum message length */
MQLONG PutAuthority; /* Put authority */
MQLONG DataConversion; /* Data conversion */
MQCHAR SecurityUserData[32]; /* Channel security
exit user data */
MQCHAR MsgUserData[32]; /* Channel message exit
user data */
MQCHAR SendUserData[32]; /* Channel send exit
user data */
MQCHAR ReceiveUserData[32]; /* Channel receive exit
user data */
The MQCXP structure is passed to each type of exit called by a Message Channel
Agent (MCA). See MQ_CHANNEL_EXIT.
The fields described as “input to the exit” in the descriptions that follow are
ignored by the MCA when the exit returns control to the MCA. The exit should
not expect that any input fields that it changes in the channel exit parameter block
will be preserved for its next invocation. Changes made to input/output fields (for
example, the ExitUserArea field), are preserved for invocations of that instance of
the exit only. Such changes cannot be used to pass data between different exits
defined on the same channel, or between the same exit defined on different
channels.
Fields
StrucId (MQCHAR4)
Structure identifier.
Fields that exist only in the earlier versions of the structure are identified as
such in the field descriptions that follow. The following constant specifies the
version number of the current version:
MQCXP_CURRENT_VERSION
Current version of channel exit parameter structure.
The value of this constant depends on the environment (see above).
Note: When a new version of the MQCXP structure is introduced, the layout
of the existing part is not changed. The exit should therefore check that
the version number is equal to or greater than the lowest version which
contains the fields that the exit needs to use.
This indicates the type of exit being called, and is set on entry to the exit
routine. Possible values are:
MQXT_CHANNEL_SEC_EXIT
Channel security exit.
MQXT_CHANNEL_MSG_EXIT
Channel message exit.
This indicates the reason why the exit is being called, and is set on entry to the
exit routine. It is not used by the auto-definition exit. Possible values are:
MQXR_INIT
Exit initialization.
This indicates that the exit is being invoked for the first time. It allows
the exit to acquire and initialize any resources that it may need (for
example: main storage).
MQXR_TERM
Exit termination.
This indicates that the exit is about to be terminated. The exit should
free any resources that it may have acquired since it was initialized (for
example: main storage).
MQXR_MSG
Process a message.
This indicates that the exit is being invoked to process a message. This
occurs for channel message exits only.
MQXR_XMIT
Process a transmission.
This occurs for channel send and receive exits only.
MQXR_SEC_MSG
Security message received.
This occurs for channel security exits only.
MQXR_INIT_SEC
Initiate security exchange.
This occurs for channel security exits only.
The receiver’s security exit is always invoked with this reason
immediately after being invoked with MQXR_INIT, to give it the
This is set by the exit to communicate with the MCA. It must be one of the
following:
MQXCC_OK
Continue normally.
v For the channel security exit, this indicates that message transfer
should now proceed normally.
v For the channel message retry exit, this indicates that the MCA
should wait for the time interval returned by the exit in the
MsgRetryInterval field in MQCXP, and then retry the message.
The ExitResponse2 field may contain additional information.
MQXCC_SUPPRESS_FUNCTION
Suppress function.
v For the channel security exit, this indicates that the channel should
be terminated.
v For the channel message exit, this indicates that the message is not
to proceed any further towards its destination. Instead the MCA
generates an exception report message (if one was requested by the
sender of the original message), and places the original message on
the dead-letter queue (if the sender specified
MQRO_DEAD_LETTER_Q), or discards it (if the sender specified
MQRO_DISCARD_MSG).
If the sender specified MQRO_DEAD_LETTER_Q, but the put to the
dead-letter queue fails, or there is no dead-letter queue, the original
message is left on the transmission queue and the report message is
not generated. The original message is also left on the transmission
queue if the report message cannot be generated successfully.
The Feedback field in the MQDLH structure at the start of the
message on the dead-letter queue indicates why the message was
put on the dead-letter queue; this feedback code is also used in the
message descriptor of the exception report message (if one was
requested by the sender).
v For the channel message retry exit, this indicates that the MCA
should not wait and retry the message; instead, the MCA continues
immediately with its normal failure processing (the message is
placed on the dead-letter queue or discarded, as specified by the
sender of the message).
v For the channel auto-definition exit, either MQXCC_OK or
MQXCC_SUPPRESS_FUNCTION must be specified. If neither of
these is specified, MQXCC_SUPPRESS_FUNCTION is assumed by
default and the auto-definition is abandoned.
This response is not supported for the channel send and receive exits.
MQXCC_SEND_SEC_MSG
Send security message.
This value can be set only by a channel security exit. It indicates that
the exit has provided a security message which should be transmitted
to the partner.
This is not valid on OS/390 if you are using CICS for distributed
queuing.
MQXCC_SUPPRESS_EXIT
Suppress exit.
v This value can be set by all types of channel exit other than a
security exit or an auto-definition exit. It suppresses any further
invocation of that exit (as if its name had been blank in the channel
definition), until termination of the MCA, when the exit is again
invoked with an ExitReason of MQXR_TERM.
v If a message retry exit returns this value, message retries for
subsequent messages are controlled by the MsgRetryCount and
MsgRetryInterval channel attributes as normal. For the current
message, the MCA performs the number of outstanding retries, at
intervals given by the MsgRetryInterval channel attribute, but only
if the reason code is one that the MCA would normally retry (see the
MsgRetryCount field described in “MQCD - Channel data structure”
on page 556). The number of outstanding retries is the value of the
MsgRetryCount attribute, less the number of times the exit returned
MQXCC_OK for the current message; if this number is negative, no
further retries are performed by the MCA for the current message.
This is not valid on OS/390 if you are using CICS for distributed
queuing.
MQXCC_CLOSE_CHANNEL
Close channel.
This value can be set by any type of channel exit except an
auto-definition exit. It causes the message channel agent (MCA) to
close the channel.
This is not valid on OS/390 if you are using CICS for distributed
queuing.
This is set to zero on entry to the exit routine. It can be set by the exit to
provide further information to the MCA. It is not used by the auto-definition
exit.
The exit can set one or more of the following. If more than one is required, the
values are added together. Combinations that are not valid are noted; other
combinations are allowed.
The value returned in this field by channel security, send, receive, and
message-retry exits is not used by the MCA.
This is the maximum length in bytes that can be sent in a single transmission.
It is not used by the auto-definition exit. It is of interest to a channel send exit,
because this exit must ensure that it does not increase the size of a
transmission segment to a value greater than MaxSegmentLength. The length
includes the initial 8 bytes that the exit must not change. The value is
negotiated between the message channel agents when the channel is initiated.
See “Writing and compiling channel-exit programs” on page 518 for more
information about segment lengths.
This is a field that is available for the exit to use. (It is not used by the
auto-definition exit.) It is initialized to binary zero before the first invocation of
the exit (which has an ExitReason set to MQXR_INIT), and thereafter any
changes made to this field by the exit are preserved across invocations of the
exit.
This is set on entry to the exit routine to information that the MCA took from
the channel definition. If no such information is available, this field is all
blanks.
| The following fields in this structure are not present if Version is less than
| MQCXP_VERSION_2.
MsgRetryCount (MQLONG)
Number of times the message has been retried.
The first time the exit is invoked for a particular message, this field has the
value zero (no retries yet attempted). On each subsequent invocation of the exit
for that message, the value is incremented by one by the MCA. On OS/390,
the value is always zero.
This is an input field to the exit. The value in this field is not meaningful if
ExitReason is MQXR_INIT. The field is not present if Version is less than
MQCXP_VERSION_2.
MsgRetryInterval (MQLONG)
Minimum interval in milliseconds after which the put operation should be
retried.
The first time the exit is invoked for a particular message, this field contains
the value of the MsgRetryInterval channel attribute. The exit can leave the
value unchanged, or modify it to specify a different time interval in
milliseconds. If the exit returns MQXCC_OK in ExitResponse, the MCA will
wait for at least this time interval before retrying the MQOPEN or MQPUT
operation. The time interval specified must be zero or greater.
The second and subsequent times the exit is invoked for that message, this
field contains the value returned by the previous invocation of the exit.
If the value returned in the MsgRetryInterval field is less than zero or greater
than 999 999 999, and ExitResponse is MQXCC_OK, the MCA ignores the
MsgRetryInterval field in MQCXP and waits instead for the interval specified
by the MsgRetryInterval channel attribute. On OS/390, the value of this field
is always zero.
This is the reason code from the previous attempt to put the message; it is one
of the MQRC_* values. On OS/390 the value of this field is always zero.
This is an input field to the exit. The value in this field is not meaningful if
ExitReason is MQXR_INIT. The field is not present if Version is less than
MQCXP_VERSION_2.
| The following fields in this structure are not present if Version is less than
| MQCXP_VERSION_3.
HeaderLength (MQLONG)
Length of header information.
This field is relevant only for a message exit. The value is the length of the
routing header structures at the start of the message data; these are the
MQXQH structure, and (for a distribution-list message) the MQDH structure
and arrays of MQOR and MQPMR records that follow the MQXQH structure.
The message exit can examine this header information, and modify it if
necessary, but the data that the exit returns must still be in the correct format.
The exit must not, for example, encrypt or compress the header data at the
sending end, even if the message exit at the receiving end makes compensating
changes.
If the message exit modifies the header information in such a way as to change
its length (for example, by adding another destination to a distribution-list
message), it must change the value of HeaderLength correspondingly before
returning.
This is an input/output field to the exit. The value in this field is not
meaningful if ExitReason is MQXR_INIT. The field is not present if Version is
less than MQCXP_VERSION_3.
PartnerName (MQCHAR48)
Partner Name.
When the exit is initialized this field is blank because the queue manager does
not know the name of the partner until after initial negotiation has taken place.
This is an input field to the exit. The field is not present if Version is less than
MQCXP_VERSION_3.
FAPLevel (MQLONG)
Negotiated Formats and Protocols level.
This is an input field to the exit. The field is not present if Version is less than
MQCXP_VERSION_3.
ExitNumber (MQLONG)
Exit number.
The ordinal number of the exit, within the type defined in ExitId. For
example, if the exit being invoked is the third message exit defined, this field
contains the value 3. If the exit type is one for which a list of exits cannot be
defined (for example, a security exit), this field has the value 1.
This is an input field to the exit. The field is not present if Version is less than
MQCXP_VERSION_3.
C declaration
typedef struct tagMQCXP {
MQCHAR4 StrucId; /* Structure identifier */
MQLONG Version; /* Structure version number */
MQLONG ExitId; /* Type of exit */
MQLONG ExitReason; /* Reason for invoking exit */
MQLONG ExitResponse; /* Response from exit */
MQLONG ExitResponse2; /* Secondary response from exit */
MQLONG Feedback; /* Feedback code */
MQLONG MaxSegmentLength; /* Maximum segment length */
MQBYTE16 ExitUserArea; /* Exit user area */
MQCHAR32 ExitData; /* Exit data */
MQLONG MsgRetryCount; /* Number of times the message has been
retried */
MQLONG MsgRetryInterval; /* Minimum interval in milliseconds after
which the put operation should be
retried */
MQLONG MsgRetryReason; /* Reason code from previous attempt to
put the message */
MQLONG HeaderLength; /* Length of header information */
MQCHAR48 PartnerName; /* Partner Name */
MQLONG FAPLevel; /* Negotiated Formats and Protocols
level */
MQLONG CapabilityFlags; /* Capability flags */
MQLONG ExitNumber; /* Exit number */
} MQCXP;
COBOL declaration
** MQCXP structure
10 MQCXP.
** Structure identifier
15 MQCXP-STRUCID PIC X(4).
** Structure version number
15 MQCXP-VERSION PIC S9(9) BINARY.
PL/I declaration
dcl
1 MQCXP based,
3 StrucId char(4), /* Structure identifier */
3 Version fixed bin(31), /* Structure version number */
3 ExitId fixed bin(31), /* Type of exit */
3 ExitReason fixed bin(31), /* Reason for invoking exit */
3 ExitResponse fixed bin(31), /* Response from exit */
3 ExitResponse2 fixed bin(31), /* Secondary response from exit */
3 Feedback fixed bin(31), /* Feedback code */
3 MaxSegmentLength fixed bin(31), /* Maximum segment length */
3 ExitUserArea char(16), /* Exit user area */
3 ExitData char(32), /* Exit data */
3 MsgRetryCount fixed bin(31), /* Number of times the message has
been retried */
3 MsgRetryInterval fixed bin(31), /* Minimum interval in milliseconds
after which the put operation
should be retried */
3 MsgRetryReason fixed bin(31), /* Reason code from previous attempt
to put the message */
3 HeaderLength fixed bin(31), /* Length of header information */
3 PartnerName char(48), /* Partner Name */
3 FAPLevel fixed bin(31), /* Negotiated Formats and Protocols
level */
3 CapabilityFlags fixed bin(31), /* Capability flags */
3 ExitNumber fixed bin(31); /* Exit number */
The MQTXP structure describes the information that is passed to the transport
retry exit.
Fields
StrucId (MQCHAR4)
Structure identifier.
The following constant specifies the version number of the current version:
MQTXP_CURRENT_VERSION
Current version of transport retry exit parameter structure.
This indicates the reason why the exit is being called. Possible values are:
MQXR_INIT
Exit initialization.
This indicates that the exit is being invoked for the first time. It allows
the exit to acquire and initialize any resources that it may need (for
example: main storage).
MQXR_TERM
Exit termination.
This indicates that the exit is about to be terminated. The exit should
free any resources that it may have acquired since it was initialized (for
example: main storage).
MQXR_RETRY
Retry a message.
MQXR_END_BATCH
Called from MCA when batch completed.
MQXR_ACK_RECEIVED
Called from MCA when an acknowledgement has been received.
This is the number of previous attempts that have been made to send the
current data. It is zero on first invocation of the exit for the current data.
This is always greater than zero. For MQXPT_UDP, it is one complete encoded
datagram.
This is the identifier of the group, bunch, or message to which the data
belongs. For MQXPT_UDP, it identifies the bunch.
This is set by the exit to indicate how processing should continue. It must be
one of the following:
MQXCC_OK
Continue normally.
This indicates that processing should continue normally.
MQXCC_REQUEST_ACK
Request acknowledgement.
This indicates that processing should continue normally, but that the
datagram about to be sent should request that an acknowledgement be
returned by the receiver of the datagram.
C declaration
typedef struct tagMQTXP {
MQCHAR4 StrucId; /* Structure identifier */
MQLONG Version; /* Structure version number */
MQLONG Reserved; /* Reserved */
MQLONG ExitReason; /* Reason for invoking exit */
MQBYTE16 ExitUserArea; /* Exit user area */
MQLONG TransportType; /* Transport type */
MQLONG RetryCount; /* Number of times data has been retried */
MQLONG DataLength; /* Length of data to be sent */
MQLONG SessionId; /* Session identifier */
MQLONG GroupId; /* Group identifier */
MQLONG DataId; /* Data identifier */
MQLONG ExitResponse; /* Response from exit */
MQLONG Feedback; /* Reserved */
} MQTXP;
Fields
StrucId (MQCHAR4)
Structure identifier.
This is the event control block (ECB) to wait on. It should be set to zero before
the MQXWAIT call is issued; on successful completion it will contain the post
code.
C declaration
typedef struct tagMQXWD {
MQCHAR4 StrucId; /* Structure identifier */
MQLONG Version; /* Structure version number */
MQLONG Reserved1; /* Reserved */
MQLONG Reserved2; /* Reserved */
MQLONG Reserved3; /* Reserved */
MQLONG ECB; /* Event control block to wait on */
} MQXWD;
However, this could be difficult in a network where the problem may arise at an
intermediate system that is staging some of your messages. An error situation,
such as transmission queue full, followed by the dead-letter queue filling up,
would result in your channel to that site closing down.
In this example, the error message you receive in your error log will indicate a
problem originating from the remote site, but may not be able to tell you any
details about the error at that site.
You need to contact your counterpart at the remote site to obtain details of the
problem, and to receive notification of that channel becoming available again.
Ping
Ping, which is not supported on MQSeries for Windows, is useful in determining
whether the communication link and the two message channel agents that make
up a message channel are functioning across all interfaces.
Ping makes no use of transmission queues, but it does invoke some user exit
programs. If any error conditions are encountered, error messages are issued.
On UNIX platforms, OS/2, Windows NT, and OS/400, you can also use the MQSC
command PING QMGR to test whether the queue manager is responsive to
commands. See the MQSeries Command Reference book for more information about
this.
If a channel ceases to run for any reason, applications will probably continue to
place messages on transmission queues, creating a potential overflow situation.
Applications can monitor transmission queues to find the number of messages
waiting to be sent, but this would not be a normal function for them to carry out.
When this occurs in a message-originating node, and the local transmission queue
is full, the application’s PUT fails.
When this occurs in a staging or destination node, there are three ways that the
MCA copes with the situation:
1. By calling the message-retry exit, if one is defined.
2. By directing all overflow messages to a dead-letter queue (DLQ), returning an
exception report to applications that requested these reports.
Validation checks
A number of validation checks are made when creating, altering, and deleting
channels, and where appropriate, an error message returned.
In-doubt relationship
If a channel is in doubt, it is usually resolved automatically on restart, so the
system operator does not need to resolve a channel manually in normal
circumstances. See “In-doubt channels” on page 69 for information about this.
Note: If the sender is MQSeries for OS/390 using CICS, the sequence number
should be reset to the same number as any receiving queue managers.
v If the status of a receiver end of the channel is STOPPED, it can be reset by
starting the receiver end.
Note: This does not start the channel, it merely resets the status. The channel
must still be started from the sender end.
Triggered channels
If a triggered channel refuses to run, the possibility of in-doubt messages should be
investigated as described above.
Another possibility is that the trigger control parameter on the transmission queue
has been set to NOTRIGGER by the channel. This happens when:
v There is a channel error
v The channel was stopped because of a request from the receiver
v The channel was stopped because of a problem on the sender that requires
manual intervention
After diagnosing and fixing the problem, you must reset the trigger control
parameter to TRIGGER.
Conversion failure
Another reason for the channel refusing to run could be that neither end is able to
carry out necessary conversion of message descriptor data between ASCII and
EBCDIC, and integer formats. In this instance, communication is not possible.
Network problems
When using LU 6.2, make sure that your definitions are consistent throughout the
network. For example, if you have increased the RU sizes in your CICS Transaction
Server for OS/390 or Communications Manager definitions, but you have a
controller with a small MAXDATA value in its definition, the session may fail if
you attempt to send large messages across the network. A symptom of this may be
that channel negotiation takes place successfully, but the link fails when message
transfer occurs.
When using TCP, if your channels are unreliable and your connections breaking,
use the SO_KEEPALIVE option, as discussed in “Checking that the other end of
the channel is still available” on page 66.
Dial-up problems
MQSeries supports connection over dial-up lines but you should be aware that
with TCP, some protocol providers assign a new IP address each time you dial in.
This can cause channel synchronization problems because the channel cannot
recognize the new IP addresses and so cannot ensure the authenticity of the
partner. If you encounter this problem, you need to use a security exit program to
override the connection name for the session.
| This problem does not occur when a V5.1 of MQSeries for AIX, AS/400, HP-UX,
| OS/2 Warp, Sun Solaris, and Windows NT product is communicating with another
| product at the same level, because the queue manager name is used for
| synchronization instead of the IP address.
You need to be aware that such situations can arise, often characterized by a
system that appears to be busy but is not actually moving messages. You need to
work with your counterpart at the far end of the link to help detect the problem
and correct it.
Retry considerations
If a link failure occurs during normal operation, a sender or server channel
program will itself start another instance, provided that:
1. Initial data negotiation and security exchanges are complete
2. The retry count in the channel definition is greater than zero
You might need to use a trace facility of your host system to identify the problem.
Disaster recovery
Disaster recovery planning is the responsibility of individual installations, and the
functions performed may include the provision of regular system ‘snapshot’
dumps that are stored safely off-site. These dumps would be available for
regenerating the system, should some disaster overtake it. If this occurs, you need
to know what to expect of the messages, and the following description is intended
to start you thinking about it.
First a recap on system restart. If a system fails for any reason, it may have a
system log that allows the applications running at the time of failure to be
regenerated by replaying the system software from a syncpoint forward to the
instant of failure. If this occurs without error, the worst that can happen is that
message channel syncpoints to the adjacent system may fail on startup, and that
the last batches of messages for the various channels will be sent again. Persistent
messages will be recovered and sent again, nonpersistent messages may be lost.
If the system has no system log for recovery, or if the system recovery fails, or
where the disaster recovery procedure is invoked, the channels and transmission
queues may be recovered to an earlier state, and the messages held on local queues
at the sending and receiving end of channels may be inconsistent.
Messages may have been lost that were put on local queues. The consequence of
this happening depends on the particular MQSeries implementation, and the
channel attributes. For example, where strict message sequencing is in force, the
receiving channel detects a sequence number gap, and the channel closes down for
manual intervention. Recovery then depends upon application design, as in the
worst case the sending application may need to restart from an earlier message
sequence number.
Channel switching
A possible solution to the problem of a channel ceasing to run would be to have
two message channels defined for the same transmission queue, but with different
communication links. One message channel would be preferred, the other would
be a replacement for use when the preferred channel is unavailable.
Connection switching
Another solution would be to switch communication connections from the
transmission queues.
To do this:
v If the sender channel is triggered, set the transmission queue attribute
NOTRIGGER.
v Ensure the channel is inactive.
v Resolve any in-doubt messages on the channel.
v Change the connection and profile fields to connect to the replacement
communication link.
v Ensure that the corresponding channel at the remote end has been defined.
v Restart the channel, or if the sender channel was triggered, set the transmission
queue attribute TRIGGER.
Client problems
A client application may receive an unexpected error return code, for example:
v Queue manager not available
v Queue manager name error
v Connection broken
Look in the client error log for a message explaining the cause of the failure. There
may also be errors logged at the server, depending on the nature of the failure.
Terminating clients
Even though a client has terminated, it is still possible for its surrogate process to
be holding its queues open. Normally this will only be for a short time until the
communications layer notifies that the partner has gone.
Error logs
MQSeries error messages are placed in different error logs depending on the
platform. There are error logs for:
v OS/2 and Windows NT
v UNIX systems
v VSE/ESA
v DOS, Windows 3.1, Windows 95, and Windows 98 clients
v OS/390
v MQSeries for Windows
| v MQSeries for Tandem NSK
The location the error logs are stored in depends on whether the queue manager
name is known and whether the error is associated with a client.
v If the queue manager name is known and the queue manager is available:
C:\MQM\QMGRS\QMgrName\ERRORS\AMQERR01.LOG
v If the queue manager is not available:
C:\MQM\QMGRS\@SYSTEM\ERRORS\AMQERR01.LOG
v If an error has occurred with a client application:
C:\MQM\ERRORS\AMQERR01.LOG
Note: The above examples assume that you have installed MQSeries on the C:
drive and in the MQM directory. On Windows NT, the default data path is
C:\WINNT\Profiles\All Users\Application Data\MQSeries\.
On Windows NT, you should also examine the Windows NT application event log
for relevant messages.
These files are not readable. See the MQSeries Clients book for information about
formatting the information.
If you are using the OS/390 message processing facility to suppress messages, the
console messages may be suppressed. See the MQSeries for OS/390 System
Management Guide for more information.
If you are using CICS, error messages are written to the OS/390 system console or
the CKMQ extrapartition transient data queue. See the MQSeries for OS/390 System
Management Guide for more information.
One of the more obvious errors is to allocate items more than once:
Communications connections identifiers
Allocate only once. It may be possible to share connections between
channels when using LU 6.2.
Channel names
Allocate only once.
Transmission queues
Allocate to only one channel. It is possible to allocate to more than one
channel for standby purposes, but ensure that only one is active, unless the
host environment is MQSeries for OS/390, and there is no sequential
delivery of messages selected.
Remote queue definition
The name must be unique.
Queue manager alias name
The name must be unique.
Reply-to queue name
The name must be unique.
Reply-to queue alias name
The name must be unique.
Adjacent channel system name
The name must be unique.
Proceed as follows:
1. Start with one adjacent system, define the first outward channel to that
system, and give it a name.
2. Fill in the channel name on the form with the channel type, transmission
queue name, adjacent system name, and remote queue manager name.
3. For each class-of-service, logically-named connection, fill in the logical queue
manager name to list the queue manager name resolutions using this channel.
4. Allocate a communication connection and fill in the name and profile, where
applicable.
5. Record the names of all the queues that your applications are going to use on
this channel, using the columns provided on the form. This is necessary where
remote queue definitions are used, so that the name resolutions are listed.
6. Do not forget to include the reply-to alias queue names in this list.
7. Move to the next channel and continue until all outward channels have been
completed for this adjacent system.
8. When this has been completed, repeat from the beginning for incoming
channels from this adjacent system.
9. Move on to the next adjacent system, and repeat.
10. Check the complete list for unwanted multiple assignments of names, objects
and connections.
When the list is complete and checked out, use it as an aid in creating the objects,
and defining the channels listed.
needed) name
QM1.T.QM2. SENDER (default) QM2 QM2C (none) QM2 QM2 Payrollr QM2 Payroll
CHANNEL
QM1.to.QM2 SENDER (none) QM2 QM2D (none) QM2 QM2 Payroll QM2 Payroll
QM2.to.QM1 RECEIVER (none) (none) (none) (none) QM2 (none) (none) (none) (none)
Appendix B. Constants for channels and exits
This appendix specifies the values of the named constants that apply to channels
and exits in the Message Queue Interface.
The constants are grouped according to the parameter or field to which they relate.
All of the names of the constants in a group begin with a common prefix of the
form “MQxxxx_”, where xxxx represents a string of 0 through 4 characters that
indicates the parameter or field to which the values relate. The constants are
ordered alphabetically by this prefix.
Notes:
1. For constants with numeric values, the values are shown in both decimal and
hexadecimal forms.
2. Hexadecimal values are represented using the notation X'hhhh', where each “h”
denotes a single hexadecimal digit.
3. Character values are shown delimited by single quotation marks; the quotation
marks are not part of the value.
4. Blanks in character values are represented by one or more occurrences of the
symbol “b”.
5. If the value is shown as “(variable)”, it indicates that the value of the constant
depends on the environment in which the application is running.
List of constants
The following sections list all of the named constants mentioned in this book, and
show their values.
MQCD_LENGTH_4 (variable)
MQCD_LENGTH_5 (variable)
MQCD_LENGTH_6 (variable)
MQCD_CURRENT_LENGTH (variable)
MQCD_VERSION_1 1 X'00000001'
MQCD_VERSION_2 2 X'00000002'
MQCD_VERSION_3 3 X'00000003'
MQCD_VERSION_4 4 X'00000004'
MQCD_VERSION_5 5 X'00000005'
MQCD_VERSION_6 6 X'00000006'
MQCD_CURRENT_VERSION (variable)
MQCDC_NO_SENDER_CONVERSION 0 X'00000000'
MQCDC_SENDER_CONVERSION 1 X'00000001'
MQCF_NONE 0 X'00000000'
MQCF_DIST_LISTS 1 X'00000001'
MQCHT_SENDER 1 X'00000001'
MQCHT_SERVER 2 X'00000002'
MQCHT_RECEIVER 3 X'00000003'
MQCHT_REQUESTER 4 X'00000004'
MQCHT_CLNTCONN 6 X'00000006'
MQCHT_SVRCONN 7 X'00000007'
MQCHT_CLUSRCVR 8 X'00000008'
MQCHT_CLUSSDR 9 X'00000009'
For the C programming language, the following array version is also defined:
MQCXP_STRUC_ID_ARRAY 'C','X','P','b'
MQCXP_VERSION_1 1 X'00000001'
MQCXP_VERSION_2 2 X'00000002'
MQCXP_VERSION_3 3 X'00000003'
MQCXP_VERSION_4 4 X'00000004'
MQCXP_CURRENT_VERSION (variable)
MQMCAT_PROCESS 1 X'00000001'
MQMCAT_THREAD 2 X'00000002'
MQNPMS_NORMAL 1 X'00000001'
MQNPMS_FAST 2 X'00000002'
MQPA_DEFAULT 1 X'00000001'
MQPA_CONTEXT 2 X'00000002'
For the C programming language, the following array version is also defined:
MQSID_NONE_ARRAY '\0','\0',...'\0','\0'
MQSIDT_NONE X'00'
MQSIDT_NT_SECURITY_ID X'01'
MQTXP_STRUC_ID 'TXPb'
For the C programming language, the following array version is also defined:
MQTXP_STRUC_ID_ARRAY 'T','X','P','b'
MQTXP_VERSION_1 1 X'00000001'
MQTXP_CURRENT_VERSION 1 X'00000001'
MQXR2_PUT_WITH_DEF_ACTION 0 X'00000000'
MQXR2_USE_AGENT_BUFFER 0 X'00000000'
MQXR2_DEFAULT_CONTINUATION 0 X'00000000'
MQXR2_PUT_WITH_DEF_USERID 1 X'00000001'
MQXR2_PUT_WITH_MSG_USERID 2 X'00000002'
MQXR2_USE_EXIT_BUFFER 4 X'00000004'
MQXR2_CONTINUE_CHAIN 8 X'00000008'
MQXR2_SUPPRESS_CHAIN 16 X'00000010'
For the C programming language, the following array version is also defined:
MQXUA_NONE_ARRAY '\0','\0',...'\0','\0'
| For the C programming language, the following array version is also defined:
|| MQXWD_STRUC_ID_ARRAY 'X','W','D','b'
|
In larger networks, the use of queue managers has a number of advantages over
other forms of communication. These advantages derive from the name resolution
function in DQM and the main benefits are:
v Applications do not need to make routing decisions
v Applications do not need to know the network structure
v Network links are created by systems administrators
v Network structure is controlled by network planners
v Multiple channels can be used between nodes to partition traffic
Machine A Machine B
Application Application
Putting Getting
application application
Channel
Queue name Queue name
resolution resolution
process process
MCA MCA
MQGET MQPUT
call call
Queue transmission Sending Network Receiving Queue 'Target'
Referring to Figure 144, the basic mechanism for putting messages on a remote
queue, as far as the application is concerned, is the same as for putting messages
on a local queue:
v The application putting the message issues MQOPEN and MQPUT calls to put
messages on the target queue.
v The application getting the messages issues MQOPEN and MQGET calls to get
the messages from the target queue.
However, if the applications are connected to different queue managers, two MCAs
and their associated network connection are involved in the transfer, as shown in
the figure. In this case, the target queue is considered to be a remote queue to the
putting application.
Note: Only step 1 and step 5 involve application code; steps 2 through 4 are
performed by the local queue managers and the MCA programs. The
putting application is unaware of the location of the target queue, which
could be in the same processor, or in another processor on another
continent.
The combination of sending MCA, the network connection, and the receiving
MCA, is called a message channel, and is inherently a unidirectional device.
Normally, it is necessary to move messages in both directions, and two channels
are set up for this, one in each direction.
In order to uncouple from the application design the exact path over which the
data travels, it is necessary to introduce a level of indirection between the name
used by the application when it refers to the target queue, and the naming of the
channel over which the flow occurs. This indirection is achieved using the queue
name resolution mechanism.
Not only is it possible for the forward path from one queue manager to another to
be partitioned into different types of traffic, but the return message that is sent to
the reply-to queue definition in the outbound message can also use the same traffic
partitioning. Queue name resolution satisfies this requirement and the application
designer need not be involved in these traffic partitioning decisions.
The point that the mapping is carried out at both the sending and receiving queue
managers is an important aspect of the way name resolution works. This allows
the queue name supplied by the putting application to be mapped to a local queue
or a transmission queue at the sending queue manager, and again remapped to a
local queue or a transmission queue at the receiving queue manager.
Reply messages from receiving applications or MCAs have the name resolution
carried out in exactly the same way, allowing return routing over specific paths by
means of queue definitions at all the queue managers on route.
Figure 145 on page 638 shows the values that you can set using these stanzas.
When you are defining one of these stanzas, you do not need to start each item on
a new line. You can use either a semicolon (;) or a hash character (#) to indicate a
comment.
QUEUEMANAGERSTARTUP:
CHINIT=Yes ; Start the CHINIT"
| Notes:
| 1. MAXINITIATORS applies only to MQSeries for AIX, MQSeries for AS/400,
| MQSeries for HP-UX, MQSeries for OS/2 Warp, and MQSeries for Sun Solaris.
| For more information about the qm.ini file and the other stanzas in it, refer to the
| MQSeries System Administration book for V5.1 of MQSeries for AIX, HP-UX, OS/2
| Warp, Sun Solaris, and Windows NT, and to the MQSeries for AS/400 V5.1 System
| Administration book for MQSeries for AS/400.
IBM may have patents or pending patent applications covering subject matter
described in this information. The furnishing of this information does not give you
any license to these patents. You can send license inquiries, in writing, to:
IBM Director of Licensing
IBM Corporation
North Castle Drive
Armonk, NY 10504-1785
U.S.A.
For license inquiries regarding double-byte (DBCS) information, contact the IBM
Intellectual Property Department in your country or send inquiries, in writing, to:
IBM World Trade Asia Corporation
Licensing
2-31 Roppongi 3-chome, Minato-ku
Tokyo 106, Japan
The following paragraph does not apply to the United Kingdom or any other
country where such provisions are inconsistent with local law:
INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS
PUBLICATION “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER
EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS
FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of express or
implied warranties in certain transactions, therefore this statement may not apply
to you.
Any references in this information to non-IBM Web sites are provided for
convenience only and do not in any manner serve as an endorsement of those Web
sites. The materials at those Web sites are not part of the materials for this IBM
product and use of those Web sites is at your own risk.
IBM may use or distribute any of the information you supply in any way it
believes appropriate without incurring any obligation to you.
The licensed program described in this information and all licensed material
available for it are provided by IBM under terms of the IBM Customer Agreement,
IBM International Programming License Agreement, or any equivalent agreement
between us.
COPYRIGHT LICENSE:
Trademarks
The following terms are trademarks of International Business Machines
Corporation in the United States, or other countries, or both:
Java and all Java-based trademarks and logos are trademarks or registered
trademarks of Sun Microsystems, Inc. in the United States and/or other countries.
Microsoft, Windows, Windows NT, and the Windows logo are trademarks of
Microsoft Corporation in the United States and/or other countries.
Other company, product, and service names may be trademarks or service marks
of others.
This glossary includes terms and definitions from ally. An OS/390 address space that is connected to
the American National Dictionary for Information MQSeries for OS/390.
Systems, ANSI X3.172-1990, copyright 1990 by the
alternate user security. A security feature in which the
American National Standards Institute (ANSI).
authority of one user ID can be used by another user
Copies may be purchased from the American
ID; for example, to open an MQSeries object.
National Standards Institute, 11 West 42 Street,
New York, New York 10036. Definitions are APAR. Authorized program analysis report.
identified by the symbol (A) after the definition.
APC. Advanced Program Communication.
active log. See recovery log. application log. In Windows NT, a log that records
significant application events.
adapter. An interface between MQSeries for OS/390
and TSO, IMS™, CICS, or batch address spaces. An application queue. A queue used by an application.
adapter is an attachment facility that enables
applications to access MQSeries services. archive log. See recovery log.
address space. The area of virtual storage available for ARM. Automatic Restart Management
a particular job.
ASID. Address space identifier.
address space identifier (ASID). A unique,
asynchronous messaging. A method of
system-assigned identifier for an address space.
communication between programs in which programs
administrator commands. MQSeries commands used place messages on message queues. With asynchronous
to manage MQSeries objects, such as queues, processes, messaging, the sending program proceeds with its own
and namelists. processing without waiting for a reply to its message.
Contrast with synchronous messaging.
Advanced Program-to-Program Communication
(APPC). The general facility characterizing the LU 6.2 attribute. One of a set of properties that defines the
architecture and its various implementations in characteristics of an MQSeries object.
products.
authorization checks. Security checks that are
alert. A message sent to a management services focal performed when a user tries to issue administration
point in a network to identify a problem or an commands against an object, for example to open a
impending problem. queue or connect to a queue manager.
alert monitor. In MQSeries for OS/390, a component authorization file. In MQSeries on UNIX systems, a
of the CICS adapter that handles unscheduled events file that provides security definitions for an object, a
occurring as a result of connection requests to class of objects, or all classes of objects.
MQSeries for OS/390.
authorization service. In MQSeries on UNIX systems,
alias queue object. An MQSeries object, the name of MQSeries for OS/2 Warp, and MQSeries for Windows
which is an alias for a base queue defined to the local NT, a service that provides authority checking of
call back. In MQSeries, a requester message channel client. A run-time component that provides access to
initiates a transfer from a sender channel by first calling queuing services on a server for local user applications.
the sender, then closing down and awaiting a call back. The queues used by the applications reside on the
server. See also MQSeries client.
CCF. Channel control function.
client application. An application, running on a
CCSID. Coded character set identifier. workstation and linked to a client, that gives the
application access to queuing services on a server.
CDF. Channel definition file.
cluster transmission queue. A transmission queue control command. In MQSeries on UNIX systems,
that transmits all messages from a queue manager to MQSeries for OS/2 Warp, and MQSeries for Windows
any other queue manager that is in the same cluster. NT, a command that can be entered interactively from
The queue is called the operating system command line. Such a command
SYSTEM.CLUSTER.TRANSMIT.QUEUE. requires only that the MQSeries product be installed; it
does not require a special utility or program to run it.
coded character set identifier (CCSID). The name of a
coded set of characters and their code point control interval (CI). A fixed-length area of direct
assignments. access storage in which VSAM stores records and
creates distributed free spaces. The control interval is
command. In MQSeries, an administration instruction the unit of information that VSAM transmits to or from
that can be carried out by the queue manager. direct access storage.
command prefix (CPF). In MQSeries for OS/390, a Control Language (CL). In MQSeries for AS/400, a
character string that identifies the queue manager to language that can be used to issue commands, either at
which MQSeries for OS/390 commands are directed, the command line or by writing a CL program.
and from which MQSeries for OS/390 operator
messages are received. controlled shutdown. See quiesced shutdown.
dead-letter queue (DLQ). A queue to which a queue ESM. External security manager.
manager or application sends messages that it cannot
ESTAE. Extended specify task abnormal exit.
deliver to their correct destination.
event. See channel event, instrumentation event,
dead-letter queue handler. An MQSeries-supplied
performance event, and queue manager event.
utility that monitors a dead-letter queue (DLQ) and
processes messages on the queue in accordance with a event data. In an event message, the part of the
user-written rules table. message data that contains information about the event
(such as the queue manager name, and the application
default object. A definition of an object (for example,
that gave rise to the event). See also event header.
a queue) with all attributes defined. If a user defines an
object but does not specify all possible attributes for event header. In an event message, the part of the
that object, the queue manager uses default attributes message data that identifies the event type of the
in place of any that were not specified. reason code for the event.
deferred connection. A pending event that is activated event log. See application log.
when a CICS subsystem tries to connect to MQSeries
for OS/390 before MQSeries for OS/390 has been event message. Contains information (such as the
started. category of event, the name of the application that
caused the event, and queue manager statistics) relating
distributed application. In message queuing, a set of to the origin of an instrumentation event in a network
application programs that can each be connected to a of MQSeries systems.
different queue manager, but that collectively constitute
a single application. event queue. The queue onto which the queue
manager puts an event message after it detects an
Distributed Computing Environment (DCE). event. Each category of event (queue manager,
Middleware that provides some basic services, making performance, or channel event) has its own event
the development of distributed applications easier. DCE queue.
is defined by the Open Software Foundation (OSF).
Event Viewer. A tool provided by Windows NT to
distributed queue management (DQM). In message examine and manage log files.
queuing, the setup and control of message channels to
queue managers on other systems. extended specify task abnormal exit (ESTAE). An
OS/390 macro that provides recovery capability and
DLQ. Dead-letter queue. gives control to the specified exit routine for
processing, diagnosing an abend, or specifying a retry
DQM. Distributed queue management.
address.
dual logging. A method of recording MQSeries for
external security manager (ESM). A security product
OS/390 activity, where each change is recorded on two
that is invoked by the OS/390 System Authorization
data sets, so that if a restart is necessary and one data
Facility. RACF is an example of an ESM.
set is unreadable, the other can be used. Contrast with
single logging.
F
dual mode. See dual logging.
FAP. Formats and Protocols.
dump analysis and elimination (DAE). An OS/390
service that enables an installation to suppress SVC FFST™. First Failure Support Technology™.
dumps and ABEND SYSUDUMP dumps that are not
needed because they duplicate previously written FIFO. First-in-first-out.
dumps.
First Failure Support Technology (FFST). Used by
dynamic queue. A local queue created when a MQSeries on UNIX systems, MQSeries for OS/2 Warp,
program opens a model queue object. See also MQSeries for Windows NT, and MQSeries for AS/400
permanent dynamic queue and temporary dynamic queue. to detect and report software problems.
IPCS. Interactive Problem Control System. logical unit of work (LUW). See unit of work.
ISC. Intersystem communication. luname. The name of the logical unit on your
workstation, that is the name of the software that
ISPF. Interactive System Productivity Facility. interfaces between your applications and the network.
message channel interface (MCI). The MQSeries MQAI. MQSeries Administration Interface.
interface to which customer- or vendor-written
programs that transmit messages between an MQSeries MQI. Message queue interface.
queue manager and another messaging system must
MQI channel. Connects an MQSeries client to a queue
conform. A part of the MQSeries Framework.
manager on a server system, and transfers only MQI
message descriptor. Control information describing calls and responses in a bidirectional manner. Contrast
the message format and presentation that is carried as with message channel.
part of an MQSeries message. The format of the
MQSC. MQSeries commands.
message descriptor is defined by the MQMD structure.
MQSeries. A family of IBM licensed programs that
message flow control. A distributed queue
provides message queuing services.
management task that involves setting up and
maintaining message routes between queue managers. MQSeries Administration Interface (MQAI). A
programming interface to MQSeries.
message priority. In MQSeries, an attribute of a
message that can affect the order in which messages on MQSeries client. Part of an MQSeries product that
a queue are retrieved, and whether a trigger event is can be installed on a system without installing the full
generated. queue manager. The MQSeries client accepts MQI calls
from applications and communicates with a queue
message queue. Synonym for queue.
manager on a server system.
message queue interface (MQI). The programming
MQSeries commands (MQSC). Human readable
interface provided by the MQSeries queue managers.
commands, uniform across all platforms, that are used
This programming interface allows application
to manipulate MQSeries objects. Contrast with
programs to access message queuing services.
programmable command format (PCF).
message queue management. The Message Queue
MQSeries server. An MQSeries server is a queue
Management (MQM) facility in MQSeries for Tandem
manager that provides queuing services to one or more
NSK V2.2 uses PCF command formats and control
clients. All the MQSeries objects, for example queues,
commands. MQM runs as a PATHWAY SCOBOL
exist only on the queue manager system, that is, on the
requester under the Terminal Control Process (TCP)
MQI server machine. A server can support normal local
and uses an MQM SERVERCLASS server, which
MQI applications as well.
invokes the C language API to perform PCF
commands. There is a separate instance of MQM for multi-hop. To pass through one or more intermediate
each queue manager configured on a system, since each queue managers when there is no direct
queue manager is controlled under its own PATHWAY communication link between a source queue manager
configuration. Consequently, an MQM is limited to the and the target queue manager.
management of the queue manager to which it belongs.
OAM. Object authority manager. performance trace. An MQSeries trace option where
the trace data is to be used for performance analysis
object. In MQSeries, an object is a queue manager, a and tuning.
queue, a process definition, a channel, a namelist, or a
storage class (OS/390 only). permanent dynamic queue. A dynamic queue that is
deleted when it is closed only if deletion is explicitly
| object authority manager (OAM). In MQSeries on requested. Permanent dynamic queues are recovered if
| UNIX systems, MQSeries for AS/400, and MQSeries for the queue manager fails, so they can contain persistent
| Windows NT, the default authorization service for messages. Contrast with temporary dynamic queue.
| command and object management. The OAM can be
| replaced by, or run in combination with, a persistent message. A message that survives a restart
| customer-supplied security service. of the queue manager. Contrast with nonpersistent
message.
object descriptor. A data structure that identifies a
particular MQSeries object. Included in the descriptor ping. In distributed queuing, a diagnostic aid that
are the name of the object and the object type. uses the exchange of a test message to confirm that a
message channel or a TCP/IP connection is
object handle. The identifier or token by which a functioning.
program accesses the MQSeries object with which it is
working. platform. In MQSeries, the operating system under
which a queue manager is running.
off-loading. In MQSeries for OS/390, an automatic
process whereby a queue manager’s active log is point of recovery. In MQSeries for OS/390, the term
transferred to its archive log. used to describe a set of backup copies of MQSeries for
OS/390 page sets and the corresponding log data sets
program temporary fix (PTF). A solution or by-pass of recovery log. In MQSeries for OS/390, data sets
a problem diagnosed by IBM field engineering as the containing information needed to recover messages,
result of a defect in a current, unaltered release of a queues, and the MQSeries subsystem. MQSeries for
program. OS/390 writes each record to a data set called the active
log. When the active log is full, its contents are
PTF. Program temporary fix. off-loaded to a DASD or tape data set called the archive
log. Synonymous with log.
Q recovery termination manager (RTM). A program that
handles all normal and abnormal termination of tasks
queue. An MQSeries object. Message queuing by passing control to a recovery routine associated with
applications can put messages on, and get messages the terminating function.
from, a queue. A queue is owned and maintained by a
queue manager. Local queues can contain a list of Registry. In Windows NT, a secure database that
messages waiting to be processed. Queues of other provides a single source for system and application
types cannot contain messages—they point to other configuration data.
queues, or can be used as models for dynamic queues.
Registry Editor. In Windows NT, the program item
queue manager. A system program that provides that allows the user to edit the Registry.
queuing services to applications. It provides an
application programming interface so that programs Registry Hive. In Windows NT, the structure of the
can access messages on the queues that the queue data stored in the Registry.
manager owns. See also local queue manager and remote
queue manager. An MQSeries object that defines the relative byte address (RBA). The displacement in
attributes of a particular queue manager. bytes of a stored record or control interval from the
beginning of the storage space allocated to the data set
queue manager event. An event that indicates: to which it belongs.
service interval event. An event related to the service supervisor call (SVC). An OS/390 instruction that
interval. interrupts a running program and passes control to the
supervisor so that it can perform the specific service
session ID. In MQSeries for OS/390, the CICS-unique indicated by the instruction.
identifier that defines the communication link to be
used by a message channel agent when moving SVC. Supervisor call.
messages from a transmission queue to a link.
switch profile. In MQSeries for OS/390, a RACF
shutdown. See immediate shutdown, preemptive profile used when MQSeries starts up or when a
shutdown, and quiesced shutdown. refresh security command is issued. Each switch profile
that MQSeries detects turns off checking for the
signaling. In MQSeries for OS/390 and MQSeries for specified resource.
Windows 2.1, a feature that allows the operating
system to notify a program when an expected message symptom string. Diagnostic information displayed in
arrives on a queue. a structured format designed for searching the IBM
software support database.
single logging. A method of recording MQSeries for
OS/390 activity where each change is recorded on one synchronous messaging. A method of communication
data set only. Contrast with dual logging. between programs in which programs place messages
on message queues. With synchronous messaging, the
single-phase backout. A method in which an action in sending program waits for a reply to its message before
progress must not be allowed to finish, and all changes resuming its own processing. Contrast with
that are part of that action must be undone. asynchronous messaging.
single-phase commit. A method in which a program syncpoint. An intermediate or end point during
can commit updates to a queue without coordinating processing of a transaction at which the transaction’s
those updates with updates the program has made to protected resources are consistent. At a syncpoint,
resources controlled by another resource manager. changes to the resources can safely be committed, or
Contrast with two-phase commit. they can be backed out to the previous syncpoint.
SYS1.LOGREC. A service aid containing information Transmission Control Protocol (TCP). Part of the
about program and hardware errors. TCP/IP protocol suite. A host-to-host protocol between
hosts in packet-switched communications networks.
TCP provides connection-oriented data stream delivery.
T Delivery is reliable and orderly.
Bibliography 661
MQSeries LotusScript Extension, v MQSeries for HP-UX, V5.1
SC34-5404 v MQSeries for OS/2 Warp, V5.1
v MQSeries for Sun Solaris, V5.1
v MQSeries for Windows NT, V5.1
Softcopy books v MQSeries link for R/3 V1.2
Most of the MQSeries books are supplied in both
hardcopy and softcopy formats. PDF versions of all current MQSeries books are
also available from the MQSeries product family
BookManager format Web site at:
http://www.ibm.com/software/ts/mqseries/
The MQSeries library is supplied in IBM
BookManager® format on a variety of online
library collection kits, including the Transaction PostScript format
Processing and Data collection kit, SK2T-0730. You The MQSeries library is provided in PostScript
can view the softcopy books in IBM BookManager (.PS) format with many MQSeries Version 2
format using the following IBM licensed products. Books in PostScript format can be
programs: printed on a PostScript printer or viewed with a
BookManager READ/2 suitable viewer.
BookManager READ/6000
BookManager READ/DOS Windows Help format
BookManager READ/MVS
The MQSeries for Windows User’s Guide is
BookManager READ/VM
provided in Windows Help format with MQSeries
BookManager READ for Windows
for Windows Version 2.0 and MQSeries for
Windows Version 2.1.
HTML format
Relevant MQSeries documentation is provided in
HTML format with these MQSeries products:
MQSeries information available
v MQSeries for AIX, V5.1 on the Internet
| v MQSeries for AS/400, V5.1
The MQSeries product family Web site is at:
v MQSeries for HP-UX, V5.1
v MQSeries for OS/2 Warp, V5.1 http://www.ibm.com/software/ts/mqseries/
v MQSeries for Sun Solaris, V5.1
v MQSeries for Windows NT, V5.1 (compiled By following links from this Web site you can:
HTML) v Obtain latest information about the MQSeries
v MQSeries link for R/3 V1.2 product family.
The MQSeries books are also available in HTML v Access the MQSeries books in HTML and PDF
format from the MQSeries product family Web formats.
site at: v Download MQSeries SupportPacs.
http://www.ibm.com/software/ts/mqseries/
Related publications
Portable Document Format (PDF)
This section describes the documentation
PDF files can be viewed and printed using the available for related products.
Adobe Acrobat Reader.
OS/400
OS/400 Communication Configuration, SC41-3401
OS/400 Communication Management, SC41-3406
OS/400 Work Management, SC41-3306
OS/400 APPC Communications Programming,
SC41-3443
Digital
Digital DECnet SNA Gateway Guide to IBM
Parameters
Digital DECnet for OpenVMS Networking
Manual
SNA
Microsoft SNA Server APPC Programmers Guide
Microsoft SNA Server CPI-C Programmers Guide
OpenNet LU 6.2, System Administrator’s Guide
OpenNet SNA Engine, System Administrator’s
Guide
SINIX
Transit SINIX Version 3.2 Administration of
Transit
Bibliography 663
Related publications
Index 667
CICS communications examples (continued) connection (continued)
CEDA INSTALL command 383 TCP/IP 303 LU 6.2 (continued)
installing communication communications Manager/2 128 OS/390 using CICS 382
connection 383 Communications Manager/2 127 OS/400 449
profile name 81 Communications Server for AIX V5 202 Tandem NSK 289
regions 352 Communications Server for Windows UNIX systems 191
transaction NT 174 Windows NT 123
CEDA 383 communications setup, Tandem NetBIOS
CKMC 352 NSK 292 OS/2 123
CKSG 384 communications side object Windows NT 123
Cisco MultiNet for Digital OS/390 342 SPX
OpenVMS 279 OS/400 451, 452 OS/2 123
CKMC CICS transaction 352 CompCode parameter 553 Windows NT 123
CKSG CICS transaction 384 components, cluster 6 switching 617
class of routing entry 457 components of distributed-queuing TCP
class of service 47 environment 13 Digital OpenVMS 277
client-connection channel 7 channel initiator 10 OS/2 123
clients, problem determination 617 channel listener 10 OS/390 339
CLUSNL attribute 82 message channel 7 OS/400 449
CLUSTER attribute 81 message channel agent 9 Tandem NSK 289
cluster channels, OS/390 337 transmission queue 10 UNIX systems 191
cluster components 6 compression of data 512 Windows NT 123
cluster name attribute 81 concentrating messages 44 UDP
cluster namelist attribute 82 concentrators 31 UNIX systems 191
cluster-receiver 9 concepts of intercommunication 3, 16, connection name 82
cluster-receiver channel 7 22 for function shipping 383
cluster-sender 8 configuration ConnectionName field 568
cluster-sender channel 7 MQSeries for AIX 209 constants 627
ClusterPtr field 577 MQSeries for AS/400 471 constants, values of 627
clusters MQSeries for AT&T GIS UNIX 251 channel capability flags
choosing transmission queue 39 MQSeries for DIGITAL UNIX (MQCF_*) 628
components 6 (Compaq Tru64 UNIX) 215 channel data conversion
concentrating messages 44 MQSeries for HP-UX 238 (MQCDC_*) 628
distribution lists 46 MQSeries for OS/2 Warp 162 channel definition structure length
message flow 35 MQSeries for OS/390 405 (MQCD_*) 628
networking considerations 52 MQSeries for Sun Solaris 271 channel definition structure version
passing messages 41 MQSeries for VSE/ESA 490 (MQCD_*) 628
putting messages 38 MQSeries for Windows NT 184 channel-exit parameter structure
reply-to queue 47 configuration file 73 identifier (MQCXP_*) 628
return routing 53 Digital OpenVMS 73 channel-exit parameter structure
separating message flows 42 OS/2 73 version (MQCXP_*) 629
using 16 SINIX and DC/OSx 311 channel type (MQCHT_*) 628
ClustersDefined field 578 Tandem NSK 73 exit identifier (MQXT_*) 631
command queue channel, OS/390 343 UNIX systems 73 exit reason (MQXR_*) 630
command validation 71 configuration worksheet 485 exit response (MQXCC_*) 630
commit in-doubt messages configuring the UDP transport-retry exit user area (MQXUA_*) 631
Digital OpenVMS 116 exit 518 exit wait descriptor structure identifier
OS/2 116 CONNAME attribute 82 (MQXWD_*) 631
OS/400 439 connection exit wait descriptor version
Tandem NSK 116 APPC/MVS, OS/390 339 (MQXWD_*) 631
UNIX systems 116 deciding upon lengths of character string and byte
Windows NT 116 OS/390 339 fields (MQ_*) 627
committed messages OS/400 449 MCA type (MQMCAT_*) 629
Digital OpenVMS 116 DECnet Phase IV 285 nonpersistent message speed
OS/2 116 DECnet Phase V 286 (MQNPMS_*) 629
OS/400 439 defining APPC/MVS (LU 6.2) 342 put authority (MQPA_*) 629
Tandem NSK 116 defining LU 6.2 secondary exit response
UNIX systems 116 Digital OpenVMS 281 (MQXR2_*) 630
Windows NT 116 OS/2 126 security identifier (MQSID_*) 629
communication OS/400 451 security identifier type
between CICS systems attached to one UNIX systems 194 (MQSIDT_*) 630
queue manager 383 Windows NT 126 transmission protocol type
between queue managers 381 installing 383 (MQXPT_*) 630
intersystem (ISC) 382 LU 6.2 transport retry exit structure identifier
communications examples Digital OpenVMS 277 (MQTXP_*) 630
ICE 299 OS/2 123 transport retry exit version
SNAX 292 OS/390 339 (MQTXP_*) 630
Index 669
ending SNA Listener process 284 example (continued) examples (continued)
ENDMQLSR command 119 running (continued) message channels (continued)
error Tandem NSK 309 requester-server 9
at remote sites 611 UNIX systems 309 sender-receiver 8
channel 65 Windows NT 309 MQSeries for AIX configuration 197
logs 115, 618 sender channel definition MQSeries for AS/400
message from channel control 611 Digital OpenVMS 308, 309 configuration 459
recovery 611 OS/2 308, 309 MQSeries for AT&T GIS UNIX
OS/390 347, 348 configuration 243
example
OS/400 479, 481 MQSeries for HP-UX
channel planning Tandem NSK 308, 309 configuration 219
Digital OpenVMS 305 UNIX systems 308, 309 MQSeries for OS/2 Warp
OS/2 305 Windows NT 308, 309 configuration 137
OS/390 345 transmission queue definition MQSeries for OS/390
OS/400 477 Digital OpenVMS 307, 308 configuration 395
UNIX systems 305 OS/2 307, 308 MQSeries for Sun Solaris
Windows NT 305 OS/390 347, 348 configuration 257
communications setup OS/400 479, 481 MQSeries for VSE/ESA
Tandem NSK 292 Tandem NSK 307, 308 configuration 485
configuration file, SINIX and UNIX systems 307, 308 MQSeries for Windows NT
DC/OSx 311 Windows NT 307, 308 configuration 169
configurations 97, 98 multi-hopping 14
example configurations
flow control 35 passing messages through system 41
local queue definition MQSeries for AIX 197, 214
MQSeries for AS/400 459, 476 passing through intermediate queue
Digital OpenVMS 308 managers 14
OS/2 308 MQSeries for AT&T GIS UNIX 243,
257 putting messages on remote
OS/390 348 queues 38
OS/400 480 MQSeries for Digital OpenVMS 277,
289 QM-concentrators 31
Tandem NSK 308 queue name resolution 54
UNIX systems 308 MQSeries for DIGITAL UNIX
(Compaq Tru64 UNIX) 215, 219 receiving messages 40
Windows NT 308 renaming a channel 111
process definition MQSeries for HP-UX 219, 243
MQSeries for OS/2 Warp 137, 168 reply-to queue 47, 48
Digital OpenVMS 307, 309 reply-to-queue alias 28
OS/2 307, 309 MQSeries for OS/390 395, 419
MQSeries for Sun Solaris 257, 277 sending messages 5, 17
OS/390 347, 348 sending messages in both
OS/400 479, 481 MQSeries for Windows NT 169, 189
directions 5
Tandem NSK 307, 309 examples
separating message flows 42
UNIX systems 307, 309 alias walk-through 51 setting up communication for OS/2
Windows NT 307, 309 channel initiators 10 and Windows NT
receiver channel definition channel listeners 10 defining a NetBIOS
Digital OpenVMS 308, 309 channel names 30 connection 128
OS/2 308, 309 channel planning defining a TCP connection 124
OS/390 347, 348 for distributed platforms 305 defining an LU 6.2
OS/400 480, 481 for OS/390 345 connection 126
Tandem NSK 308, 309 for OS/390 using CICS 387 defining an SPX connection 131
UNIX systems 308, 309 for OS/400 477 setting up communication in Digital
Windows NT 308, 309 choosing the transmission queue 39 OpenVMS
remote queue definition cluster of queue managers 6 defining a DECnet Phase IV
Digital OpenVMS 307 communication in MQSeries for connection 285
OS/2 307 AS/400, TCP connection 449 defining a DECnet Phase V
OS/390 346 concentrating messages 44 connection 286
OS/400 478 configuration file on bight 312 defining an LU 6.2
Tandem NSK 307 configuration file on forties 313 connection 281
UNIX systems 307 configuration files setting up communication in
Windows NT 307 for Pyramid DC/OSx 313 MQSeries for OS/390
reply-to queue definition SINIX and DC/OSx 311 LU 6.2 connection 342
Digital OpenVMS 308 create channel 109 TCP connection 339
OS/2 308 creating reply-to aliases 36 setting up communication in Tandem
OS/390 347 defining channels 18 NSK
OS/400 480 defining queues 19 SNA channels 289
Tandem NSK 308 defining remote queue definitions 36 TCP channels 291
UNIX systems 308 display channel 110 setting up communication in UNIX
Windows NT 308 display channel status 110 systems
running diverting message flows 45 defining a TCP connection 191
Digital OpenVMS 309 message channels defining an LU 6.2
OS/2 309 cluster-receiver 9 connection 194
OS/390 349 cluster-sender 8
OS/400 482 requester-sender 9
Index 671
I keyboard functions (continued)
OS/390 using CICS (continued)
LU 6.2 connection (continued)
MQSeries for AT&T GIS UNIX 243
IBM Communications Server for enter key 354 MQSeries for Digital OpenVMS 277
Windows NT 174 unassigned keys and unavailable MQSeries for HP-UX 219
ICE communications example 299 choices 354 MQSeries for OS/2 Warp 137
in-doubt 80 MQSeries for OS/390 395
in-doubt channels, manual MQSeries for OS/390 with CICS 381,
resynchronization 69
in-doubt message on channel, resolve on L 402
MQSeries for OS/390 without
OS/390 333 links, wide-band 31
CICS 400
in-doubt messages, commit or back out list cluster channels, OS/390 337
MQSeries for Sun Solaris 257
Digital OpenVMS 116 listener, trusted 10, 12, 121
MQSeries for Tandem NSK 289
OS/2 116 listening on LU 6.2
MQSeries for VSE/ESA 485
OS/400 439 OS/2 127
MQSeries for Windows NT 169
Tandem NSK 116 OS/390 342
setting up
UNIX systems 116 UNIX systems 195
OS/2 123
Windows NT 116 Windows NT 127
OS/390 342
INACTIVE channel state 62, 65 listening on NetBIOS
OS/390 using CICS 382
ini file 73 OS/2 131
OS/400 449
initial data negotiation 20, 61 Windows NT 131
UNIX systems 191
initialization data set, OS/390 without listening on SPX
Windows NT 123
CICS 73 OS/2 132, 162
LU62
initialization file 73 Windows NT 132, 183
stanza of qm.ini file 637
initiator for channel listening on TCP
AIX, OS/2, HP-UX, Sun Solaris, and Digital OpenVMS 278
Windows NT 118 OS/2 124
OS/390 327 OS/390 340 M
installing OS/400 450 maximum
CICS communication connection 383 UNIX systems 192 active channels 64
integrity of delivery 22 Windows NT 124 current channels 64
intercommunication local queue definition message length 87
concepts 3, 16, 22 example transmission size 87
example 485 Digital OpenVMS 308 MAXMSGL attribute 87
example configuration 97 OS/2 308 MaxMsgLength field 565
intercommunication example 485, 503 OS/390 348 MaxSegmentLength field 598
intercommunication examples OS/400 480 MCA
MQSeries for AIX 197 Tandem NSK 308 caller 9
MQSeries for AS/400 459 UNIX systems 308 name 87
MQSeries for AT&T GIS UNIX 243 Windows NT 308 responder 9
MQSeries for DIGITAL UNIX local queue manager 3 type 88
(Compaq Tru64 UNIX) 215 location name 42 user 88
MQSeries for HP-UX 219 log user-written 75
MQSeries for OS/2 Warp 137 error 115, 618 MCANAME attribute 87
MQSeries for OS/390 395 file, @SYSTEM 618 MCAName field 561
MQSeries for Sun Solaris 257 logs for errors 115 MCASecurityId field 579
MQSeries for VSE/ESA 485 long retry count attribute 85 MCATYPE attribute 88
MQSeries for Windows NT 169 long retry interval attribute 85 MCAType field 568
interfaces LongMCAUserIdLength field 578 MCAUSER attribute 88
Interlink SNSTCPAccess 344 LongMCAUserIdPtr field 579 MCAUserIdentifier field 567
IUCV 344 LongRemoteUserIdLength field 578 message
Interlink SNSTCPAccess interface 344 LongRemoteUserIdPtr field 579 committed
intersystem communication (ISC) 381 LongRetryCount field 563 Digital OpenVMS 116
ISC (intersystem communication) 381 LongRetryInterval field 563 OS/2 116
IUCV interface 344 LONGRTY attribute 85 OS/400 439
LONGTMR attribute 85 Tandem NSK 116
loopback testing 56 UNIX systems 116
J LU 6.2 Windows NT 116
journaling 514 mode name 86 concentrating 44
responder processes 291 converting 83
settings diverting flows 45
K OS/2 126 encryption 505
KEEPALIVE 66 OS/400 451 error 611
OS/2 132, 162 UNIX systems 194 for distribution list 46
keyboard functions Windows NT 126 passing through system 41
function keys TP name 86 putting on remote queue 37
OS/390 using CICS 353 LU 6.2 connection queue name translations 53
OS/390 using CICS MQSeries for AIX 197 receiving 40
clear key 354 MQSeries for AS/400 459 return routing 53
Index 673
MQXR_* values (continued) network infrastructure, example panels (continued)
MQTXP structure 606 configurations 98 display status
MQXR2_* values 596 network planner 31 message channel list 364
MQXT_* values 592 networking 41 edit menu-bar options
MQXUA_* values networking considerations 52 message channel list 367
MQCXP structure 606 NetworkPriority field 578 ending channel
MQTXP structure 598 networks 29 OS/400 438
MQXWAIT call 553 node centric 36 exit
MQXWD_* values 609 nonpersistent message speed 90 message channel list 366
MQXWD structure 609 NonPersistentMsgSpeed field 573 exit from 373
MRDATA attribute 89 help menu-bar choice, message
MREXIT attribute 89 channel list 372
MRO (multiregion operation) 381 O OS/390 using CICS, message channel
MRRTY attribute 89 objects list 354
MRTMR attribute 89 creating OS/400
MSGDATA attribute 89 default 108 resolve 439
MSGEXIT attribute 88 Digital OpenVMS 108 work with status 437
MsgExit field 563 OS/2 108 ping
MsgExitPtr field 575 OS/400 426 message channel list 366
MsgExitsDefined field 574 Tandem NSK 108 OS/400 437
MsgRetryCount field UNIX systems 108 receiver channel settings 377
MQCD structure 571 Windows NT 108 reset
MQCXP structure 599 defining 384 message channel list 362
MsgRetryExit field 570 OS/390 342 OS/400 439
MsgRetryInterval field security 120, 447 resolve
MQCD structure 572 operator commands message channel list 363
MQCXP structure 599 OS/400 424 resync
MsgRetryReason field 600 options message channel list 361
MsgRetryUserData field 570 alter 370 selecting a channel
MsgUserData field 566 change 436 OS/400 430
MsgUserDataPtr field 575 copy 367, 436 starting channel
multi-hopping 14 create 368, 435 message channel list 357
multiple message channels per display 437 stopping channel
transmission queue display settings 365 message channel list 359
Digital OpenVMS 120 display status 364, 437 using, OS/390 322
OS/2 120 end 438 view menu-bar choice
OS/390 using CICS 384 exit 366, 373 message channel list 371
OS/400 447 find 370 work-with-channel choices
Tandem NSK 120 ping 366, 437 OS/400 434
UNIX systems 120 reset 362, 439 Work with channel status
Windows NT 120 resolve 116, 363 OS/400 432
multiple queue managers 127 OS/400 439 parameters
multiregion operation (MRO) 381 resync 361 AgentBuffer 547
save 373 AgentBufferLength 547
N start 357, 437
stop
ChannelDefinition
MQ_CHANNEL_AUTO_DEF_EXIT
name resolution
OS/390 using CICS 359 call 551
conflicts 53
OS/390 connections MQ_CHANNEL_EXIT call 546
convention 52
connecting systems 381 ChannelExitParms
description 633
LU 6.2 381 MQ_CHANNEL_AUTO_DEF_EXIT
introduction 26
call 551
location 42
MQ_CHANNEL_EXIT call 546
queue name translations 53
restriction 48 P CompCode 553
DataLength 546
NDF file configuration 128 panel data, validation 71
DestAddress 555
negotiations on startup 61, 613 panels
DestAddressLength 555
NetBIOS 4, 128 browsing a channel
ExitBufferAddr 548
NETBIOS OS/400 430
ExitBufferLength 548
stanza of qm.ini file 637 channel start
ExitParms 555
NetBIOS, example configurations 98 OS/400 437
Hconn 553
NetBIOS connection creating a channel
Reason 553
MQSeries for OS/2 Warp 160 OS/400 426
WaitDesc 553
MQSeries for Windows NT 181 display
parameters, receiving 59
OS/2 123 channel status 364
Windows NT 123 OS/400 437 PartnerName field 600
NetBIOS products, in example display channel status 437 password 90
configurations 98 display settings Password field 567
network-connection priority 90 message channel list 365 PAUSED channel state 62, 66
Index 675
receiving (continued) requester channel settings panel, security (continued)
OS/400 450 details 379 objects (continued)
Tandem NSK 304 REQUESTING channel state 62 MQSeries for AS/400 447
UNIX systems 192 Reserved field 606 OS/2 120
Windows NT 124 Reserved1 field 609 Tandem NSK 120
receiving messages 40, 58 Reserved2 field 609 UNIX systems 120
receiving on DECnet Phase IV 286 Reserved3 field 610 Windows NT 120
receiving on LU 6.2 reset 116, 362, 439 process 91
OS/2 127 RESET CHANNEL command 614 SecurityExit field 563
OS/390 342 reset channel sequence numbers, SecurityUserData field 565
Tandem NSK 291 OS/390 332 segregating messages 15
UNIX systems 195 resolve 363 selected menu-bar choice 357
Windows NT 127 RESOLVE CHANNEL command 613 selecting a channel 430
receiving on SPX resolve in-doubt message on channel, OS/390 using CICS 354
OS/2 132, 162 OS/390 333 send
Windows NT 132, 183 resolve in-doubt messages 116 exit 12
receiving on TCP OS/400 439 exit name 93
Digital OpenVMS 278 resolve option 116 exit program 512
OS/2 124 OS/400 439 message 57
OS/390 340 responder send exit user data 93
OS/400 450 LU6.2 78, 114, 291 SENDDATA attribute 93
Tandem NSK 304 MCA 9 sender channel 7
UNIX systems 192 responder MCA 9
sender channel definition
Windows NT 124 responder process 78, 114, 291
example
reference-message header restarting
Digital OpenVMS 308, 309
message exit program 515 channels 61
OS/2 308, 309
registry 73, 74, 126, 129, 135, 182, 524 restarting stopped channels 69
OS/390 347, 348
remote queue definition 36 resync 361
OS/400 479, 481
example RETRY channel state 62, 65
Tandem NSK 308, 309
Digital OpenVMS 307 retry considerations 615
UNIX systems 308, 309
OS/2 307 RetryCount field 607
Windows NT 308, 309
OS/390 346 retrying the link, problem
overview 5
OS/400 478 determination 615
sender channel settings
Tandem NSK 307 return routing 53
details 376
UNIX systems 307 return to sender 72
reusing exit programs 533 SENDEXIT attribute 93
Windows NT 307
introduction 15, 25 routing entry SendExit field 564
what it is 14 add 456 SendExitPtr field 576
remote queue manager 3 class 457 SendExitsDefined field 575
RemotePassword field 569 routing entry class 457 sending
RemoteSecurityId field 579 routing messages 39 messages 17, 58
RemoteUserIdentifier field 569 run channel 110, 429 on DECnet Phase IV 286
run channel initiator 118 on SPX
renaming a channel
runmqchi command OS/2 131
Digital OpenVMS 111
AIX, OS/2, HP-UX, Sun Solaris, and Windows NT 131
OS/2 111
Windows NT 118 on TCP
OS/390 using CICS 357
RUNMQCHI command 119 Digital OpenVMS 278
OS/400 432
RUNMQCHL command 119 OS/2 124
Tandem NSK 111
RUNMQLSR command 119 Windows NT 124
UNIX systems 111
sending on TCP 191
Windows NT 111
SendUserData field 566
reply-to alias 36 S SendUserDataPtr field 576
reply-to queue 47 save option 373 SeqNumberWrap field 564
alias definition 28 scenarios, problem determination 611
alias example 48 sequence number wrap 93
SCF configuration file, example 292
aliases 25 sequence numbering 54
SCYDATA attribute 93
preparing for 29 sequence numbers 59
SCYEXIT attribute 92
specifying 28 reset, OS/390 332
security
reply-to queue definition context 91 sequential delivery 93
example exit 12 sequential retrieval of messages 55
Digital OpenVMS 308 exit name 92 SEQWRAP attribute 93
OS/2 308 exit program 507 server
OS/390 347 exit program, overview 506 AT&T GIS SNA 246
OS/400 480 exit user data 93 channel 7
Tandem NSK 308 levels for exit programs 121 channel settings panel, detail 378
UNIX systems 308 message channel agent 91 server-connection channel 7
Windows NT 308 objects service, class of 47
requester channel 7 Digital OpenVMS 120 SessionId field 607
Index 677
transmission queue UDP transport-retry exit, worksheet (continued)
definition of 10 configuring 517 MQSeries for AS/400
example definition undeliverable message 71 configuration 459
Digital OpenVMS 307 user exit MQSeries for AT&T GIS UNIX
OS/2 307 data definition files 544 configuration 243
OS/390 347 MQCXP structure 591 MQSeries for HP-UX
OS/400 479 MQTXP structure 605 configuration 219
Tandem NSK 307 MQXWD structure 609 MQSeries for OS/2 Warp
UNIX systems 307 user-exit configuration 137
Windows NT 307 programs 616 MQSeries for OS/390
multiple message channels user-exit programs 505, 542 configuration 396
Digital OpenVMS 120 problem determination 616 MQSeries for Sun Solaris
MQSeries for AS/400 447 security levels 121 configuration 257
OS/2 120 system extension MQSeries for Windows NT
OS/390 using CICS 384 Digital OpenVMS 121 configuration 170
Tandem NSK 120 OS/2 121 writing your own message channel
UNIX systems 120 OS/400 448 agents 75
Windows NT 120 Tandem NSK 121 WRKCLS command 457
overflow 612 UNIX systems 121 WRKSBSD command 455
selecting 42 Windows NT 121
sharing 14 writing and compiling 518
transmission queue definition
example
user ID 95, 121
user identifier service 121
X
XMITQ attribute 94
Digital OpenVMS 308 user-written MCAs 75
XmitQName field 561
OS/2 308 USERDATA parameter 358, 384, 443
OS/390 348 OS/390 343
OS/400 481 USERID attribute 95
Tandem NSK 308 UserIdentifier field 566
UNIX systems 308
Windows NT 308
transmission queue name 94
transport-retry exit
V
validation
introduction 12
checks 612
transport-retry exit program 517
command 71
transport type 95
of user IDs 514
supported 4
panel data 71
TransportType field
values supplied by MQSeries for
MQCD structure 560
AS/400 435
MQTXP structure 606
values supplied by OS/390 using
triggered channels, problem
CICS 369, 372
determination 614
Version field
triggering
MQCD structure 558
channels 20
MQCXP structure 592
Digital OpenVMS 117
MQTXP structure 605
MQSeries for AS/400 443
MQXWD structure 609
OS/2 117
view
OS/390 343
activities
OS/390 using CICS 358
OS/390 using CICS 371
Tandem NSK 117
menu-bar choice 371
UNIX systems 117
VSAM 351
Windows NT 117
MCAs
OS/390 using CICS 384
TRPTYPE attribute 95 W
trusted applications 12, 121 WaitDesc parameter 553
type, bind 121 WAITING channel state 62
types of channel 81 wide-band links 31
Windows 3.1 client, channel-exit
U programs 524
Windows 95 and Windows 98 client,
UCD products, in example
configurations 98 channel-exit programs 524
UDP Windows Help 662
example configurations 98 work-with-channel choices 434
UDP connection work with channel status 432
MQSeries for AIX 209 work with status 437
setting up worksheet
UNIX systems 191 MQSeries for AIX configuration 197
Feel free to comment on what you regard as specific errors or omissions, and on
the accuracy, organization, subject matter, or completeness of this book.
Please limit your comments to the information in this book and the way in which
the information is presented.
When you send comments to IBM, you grant IBM a nonexclusive right to use or
distribute your comments in any way it believes appropriate, without incurring
any obligation to you.
You can send your comments to IBM in any of the following ways:
v By mail, to this address:
Information Development Department (MP095)
IBM United Kingdom Laboratories
Hursley Park
WINCHESTER,
Hampshire
United Kingdom
v By fax:
– From outside the U.K., after your international access code use
44–1962–870229
– From within the U.K., use 01962–870229
v Electronically, use the appropriate network ID:
– IBM Mail Exchange: GBIBM2Q9 at IBMMAIL
™
– IBMLink : HURSLEY(IDRCF)
– Internet: [email protected]
SC33-1872-03
Spine information: