Publish/subscribe hierarchy scenario 2: Using point-to-point channels with same name for transmission queue and remote queue manager

This is the second in a set of three scenarios that set up a publish/subscribe hierarchy in different ways to establish the connection between queue managers. This scenario sets up a publish/subscribe hierarchy that uses point-to-point channels with the transmission queue name the same as the remote queue manager.


This set of scenarios all use a parent queue manager called QM1, and two child queue managers called QM2, and QM3.

Scenario 2 is split into smaller sections to make the process easier to follow. This scenario reuses Scenario 1 part 1, Scenario 1 part 3, and Scenario 1 part 4 from Publish/subscribe hierarchy scenario 1: Using point-to-point channels with queue manager name alias.

Figure 1. Topology diagram showing the relationship between queue managers in a typical publisher/subscribe hierarchy.


Scenario 2 part 1: Create queue manager and set PSMODE

Procedure

  1. Create and start three queue managers called QM1, QM2, and QM3 using the following commands:
    crtmqm -u SYSTEM.DEAD.LETTER.QUEUE QM1
    strmqm QM1
    
    crtmqm -u SYSTEM.DEAD.LETTER.QUEUE QM2
    strmqm QM2
    
    crtmqm -u SYSTEM.DEAD.LETTER.QUEUE QM3
    strmqm QM3
    
  2. Enable the queue manager publish/subscribe mode by using the following command on all three queue managers:
    ALTER QMGR PSMODE(ENABLED)
    


Scenario 2 part 2: Point-to-point channel connections

About this task

Establish point-to-point channel connections between a queue manager using a transmission queue with the same name as the parent queue manager.

Procedure

  1. Define a transmission queue on QM2 to QM1. Define a sender channel to QM1 and a receiver channel for the sender channel for QM2 created on QM1:
    DEFINE QLOCAL(QM1) USAGE(XMITQ)
    
    DEFINE CHANNEL('QM2.TO.QM1') CHLTYPE(SDR) CONNAME('localhost(9999)') XMITQ(QM1) TRPTYPE(TCP)
    
    DEFINE CHANNEL('QM1.TO.QM2') CHLTYPE(RCVR) TRPTYPE(TCP)
    
  2. Define a transmission queue on QM3 to QM1. Define sender channel to QM1 and a receiver channel for the sender channel created on QM1 for QM3:
    DEFINE QLOCAL(QM1) USAGE(XMITQ)
    
    DEFINE CHANNEL('QM3.TO.QM1') CHLTYPE(SDR) CONNAME('localhost(9999)') XMITQ(QM1) TRPTYPE(TCP)
    
    DEFINE CHANNEL('QM1.TO.QM3') CHLTYPE(RCVR) TRPTYPE(TCP)
    
  3. Define transmission queues on QM1 to QM2 and QM3. Define sender channels to QM2 and QM3, and a receiver channel for the sender channels created on QM2 and QM3 for QM1:
    DEFINE QLOCAL(QM2) USAGE(XMITQ)
    
    DEFINE CHANNEL('QM1.TO.QM2') CHLTYPE(SDR) CONNAME('localhost(7777)') XMITQ(QM2) TRPTYPE(TCP)
    
    DEFINE CHANNEL('QM2.TO.QM1') CHLTYPE(RCVR) TRPTYPE(TCP)
    
    DEFINE QLOCAL(QM3) USAGE(XMITQ)
    
    DEFINE CHANNEL('QM1.TO.QM3') CHLTYPE(SDR) CONNAME('localhost(8888)') XMITQ(QM3) TRPTYPE(TCP)
    
    DEFINE CHANNEL('QM3.TO.QM1') CHLTYPE(RCVR) TRPTYPE(TCP)
    
  4. Start the appropriate listeners on the queue managers:
    runmqlsr -m QM1 -t TCP -p 9999 &
    runmqlsr -m QM2 -t TCP -p 7777 &
    runmqlsr -m QM3 -t TCP -p 8888 &
    
  5. Start the following channels:
    1. On QM1:
      START CHANNEL('QM1.TO.QM2')
      
      START CHANNEL('QM1.TO.QM3')
      
    2. On QM2:
      START CHANNEL('QM2.TO.QM1')
      
    3. On QM3:
      START CHANNEL('QM3.TO.QM1')
      
  6. Check that all the channels have started:
    DISPLAY CHSTATUS('QM1.TO.QM2')
    
    DISPLAY CHSTATUS('QM1.TO.QM3')
    
    DISPLAY CHSTATUS('QM2.TO.QM1')
    
    DISPLAY CHSTATUS('QM3.TO.QM1')
    


Scenario 2 part 3: Connect queue managers and define a topic

About this task

Connect the child queue managers QM2 and QM3 to the parent queue manager QM1.

Procedure

  1. On QM2 and QM3, set the parent queue manager to QM1:
    ALTER QMGR PARENT (QM1)
    
  2. Run the following command on all queue managers to check that the child queue managers are connected to the parent queue manager:
    DISPLAY PUBSUB TYPE(ALL)
    
    Command output is displayed. For example, here is output for QM1, with the key details highlighted:
    DISPLAY PUBSUB ALL
    1 : DISPLAY PUBSUB ALL
    AMQ8723: Display pub/sub status details.
    QMNAME(QM1)               TYPE(LOCAL)
    STATUS(ACTIVE)             SUBCOUNT(6)
    TPCOUNT(9)
    AMQ8723: Display pub/sub status details.
    QMNAME(QM2) TYPE(CHILD)
    STATUS(ACTIVE) SUBCOUNT(NONE)
    TPCOUNT(NONE)
    AMQ8723: Display pub/sub status details.
    QMNAME(QM3) TYPE(CHILD)
    STATUS(ACTIVE) SUBCOUNT(NONE)
    TPCOUNT(NONE)
    


Scenario 2 part 4: Publish and subscribe the topic

About this task

Use the amqspub.exe and amqssub.exe applications to publish and subscribe the topic.

Procedure

  1. Run this command in the first command window:
    amqspub Sport/Soccer QM2
    
  2. Run this command in the second command window:
    amqssub Sport/Soccer QM1
    
  3. Run this command in the third command window:
    amqssub Sport/Soccer QM3
    

Results

The amqssub.exe applications in the second and third command windows receive the messages published in the first command window.