[IBM MQ Advanced][Linux][V9.0.4 Oct 2017]

Configuring IBM MQ for use with blockchain

Set up and run the IBM® MQ Bridge to blockchain to securely connect an IBM MQ Advanced queue manager and IBM Blockchain. Use the bridge to asynchronously connect to, look up and update the state of a resource in your blockchain, by using a messaging application that connects to your IBM MQ Advanced queue manager.

Before you begin

  • IBM MQ Bridge to blockchain is available for connecting to IBM MQ Advanced queue managers only.
  • The queue manager must be at the same command level as the bridge, for example IBM MQ 9.0.4.
  • IBM MQ Bridge to blockchain is supported for use with your blockchain network that is based on Hyperledger Fabric 1.0 architecture.

About this task

Blockchain is a shared, distributed, digital ledger that consists of a chain of blocks that represent agreed upon transactions between peers in a network. Each block in the chain is linked to the previous block, and so on, back to the first transaction.

IBM Blockchain is built on Hyperledger Fabric and you can develop with it locally with Docker or in a container cluster in IBM Cloud® (formerly Bluemix®). You can also activate and use your IBM Blockchain network in production, to build, and govern a business network with high levels of security, privacy, and performance. For more information, see the IBM Blockchain Platform.

Hyperledger Fabric is an open source, enterprise blockchain framework that is developed collaboratively by members of the Hyperledger Project, including IBM as the initial code contributor. Hyperledger Project, or Hyperledger, is a Linux Foundation open source, global, collaborative initiative to advance cross-industry blockchain technologies. For more information, see IBM Blockchain, Hyperledger Projects, and Hyperledger Fabric.

If you are already using IBM MQ Advanced and IBM Blockchain, you can use the IBM MQ Bridge to blockchain to send simple queries, updates, and receive replies from your blockchain network. In this way, you can integrate your on-premises IBM software with a cloud blockchain service.

A brief overview of the bridge operating process can be seen in Figure 1. A user application puts a JSON formatted message on the input/request queue on the IBM MQ Advanced queue manager. The bridge connects to the queue manager, gets the message from the input/request queue, checks that the JSON is correctly formatted, then issues the query or an update to the blockchain. The data that is returned by the blockchain is parsed by the bridge and placed on the reply queue, as defined in the original IBM MQ request message. The user application can connect to the queue manager, get the response message from the reply queue, and use the information.

Figure 1. IBM MQ Bridge to blockchain
The diagram shows three environments, IBM MQ Advanced with the queue manager containing input and reply queues, X86 Linux with the IBM MQ Bridge to blockchain, and IBM Blockchain with the Hyperledger Fabric network. There is also an application that sends a JSON request that goes through the input/request queue, the bridge, and the bridge sends it to the blockchain network. A green arrow shows the flow of the request message from the application to the blockchain. A blue arrow shows the flow of the reply, from the blockchain network, through the bridge, to the reply queue and back to the application.

You can configure the IBM MQ Bridge to blockchain to connect to a blockchain network as a participant, or peer. When the bridge is running, a messaging application requests the bridge to drive chaincode routines that query or update the state of the resource and return the results as a response, to the messaging application.

Procedure

  1. Create and start a queue manager, or start an existing queue manager that you want to use with your IBM MQ Bridge to blockchain.
    Create queue manager:
    crtmqm adv_qmgr_name
    Start queue manager:
    strmqm adv_qmgr_name
  2. Create the queues for the bridge that are defined in the DefineQ.mqsc script.
    Sample bridge queue definitions are provided for the default named queues that are used for:
    • User credentials, for example SYSTEM.BLOCKCHAIN.IDENTITY.QUEUE
    • Message input to the bridge, for example APPL1.BLOCKCHAIN.INPUT.QUEUE
    • Replies from blockchain, for example APPL1.BLOCKCHAIN.REPLY.QUEUE
    From the /opt/mqm/mqbc/samp directory, issue the following command:
    runmqsc adv_qmgr_name < ./DefineQ.mqsc
    Different applications can use the same input queue but you can specify multiple reply queues, one for each of your applications. You do not have to use defined reply queues. If you want to use dynamic queues for replies, you must consider their security configuration.

Results

You created the queues that the bridge requires for processing messages from IBM MQ and your blockchain network.

What to do next

Use your IBM MQ Advanced queue manager information and the credentials from your blockchain network to create a configuration file for the IBM MQ Bridge to blockchain.