Configuring IBM MQ for use with blockchain
Set up and run the IBM® MQ Bridge to blockchain to securely connect an IBM MQ Advanced or IBM MQ Advanced for z/OS® Value Unit Edition 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 or IBM MQ Advanced for z/OS VUE queue manager.
Before you begin
You must be running IBM MQ 9.1.4 to use the IBM MQ Bridge to blockchain built on Hyperledger Fabric.
- IBM MQ Bridge to blockchain is available for connecting to:
- IBM MQ Advanced, or
- IBM MQ Advanced for z/OS VUE
- The queue manager must be at the same command level as the bridge, or above; for example 9.1.4.
- IBM MQ Bridge to blockchain is supported for use with your blockchain network that is based on Hyperledger Fabric 1.4 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, or IBM MQ Advanced for z/OS VUE, 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.
You can see a brief overview of the bridge operating process in Figure 1. A user application puts a JSON formatted message on the input/request queue on the IBM MQ Advanced, or IBM MQ Advanced for z/OS VUE 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.
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.
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_nameStart queue manager:
Create the queues for the bridge that are defined in the DefineQ.mqsc
Sample bridge queue definitions are provided for the default named queues that are used for:
From the /opt/mqm/mqbc/samp directory, issue the following command: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.
- 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
runmqsc adv_qmgr_name < ./DefineQ.mqsc