{"id":18837245,"url":"https://github.com/clarenceb/apim-logicapps-mq","last_synced_at":"2026-05-05T06:37:50.909Z","repository":{"id":249615663,"uuid":"684366779","full_name":"clarenceb/apim-logicapps-mq","owner":"clarenceb","description":"APIM to Logic Apps to IBM MQ integration demo","archived":false,"fork":false,"pushed_at":"2024-07-22T07:13:14.000Z","size":7,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-30T08:40:32.089Z","etag":null,"topics":["aks","apim","azure","ibmmq","integration","logicapps"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/clarenceb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-08-29T01:51:43.000Z","updated_at":"2024-07-22T07:13:17.000Z","dependencies_parsed_at":"2024-07-22T08:57:30.413Z","dependency_job_id":null,"html_url":"https://github.com/clarenceb/apim-logicapps-mq","commit_stats":null,"previous_names":["clarenceb/apim-logicapps-mq"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clarenceb%2Fapim-logicapps-mq","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clarenceb%2Fapim-logicapps-mq/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clarenceb%2Fapim-logicapps-mq/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clarenceb%2Fapim-logicapps-mq/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/clarenceb","download_url":"https://codeload.github.com/clarenceb/apim-logicapps-mq/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239774324,"owners_count":19694700,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aks","apim","azure","ibmmq","integration","logicapps"],"created_at":"2024-11-08T02:34:32.551Z","updated_at":"2026-01-28T01:30:14.953Z","avatar_url":"https://github.com/clarenceb.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"APIM + Logic Apps + MQ integration\n==================================\n\nDemonstrate APIM receiving a payload and passing it to a Logic Apps workflow which puts a message onto IBM MQ queue for downstream processing.\n\nSet / Load environment variables\n--------------------------------\n\nCopy file env.sh.template to env.sh and update the values.\n\n```sh\nsource ./env.sh\n```\n\nCreate AKS cluster\n------------------\n\n```sh\naz group create --name $RESOURCE_GROUP --location $LOCATION\n\naz aks create \\\n    --resource-group $RESOURCE_GROUP \\\n    --name $CLUSTER_NAME \\\n    --node-count 3 \\\n    --network-plugin azure \\\n    --network-plugin-mode overlay \\\n    --pod-cidr 192.168.0.0/16 \\\n    --enable-managed-identity\n    --generate-ssh-keys \\\n    --enable-addons monitoring \\\n    --enable-msi-auth-for-monitoring\n\naz aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME\n```\n\nDeploy IBM MQ via Sample Helm Chart\n-----------------------------------\n\n```sh\ngit clone https://github.com/ibm-messaging/mq-helm.git\n\ncd mq-helm/samples/AzureAKS/deploy\n./install.sh\n\nkubectl get statefulset\nkubectl get pod\nkubectl get service\n# secureapphelm-ibm-mq-loadbalancer   LoadBalancer   \u003ccluster-ip\u003e   \u003cexternal-ip\u003e   1414:32709/TCP,9443:31804/TCP   18h\n\nkubectl exec -it secureapphelm-ibm-mq-0 -- /bin/bash\ndspmq\n# QMNAME(secureapphelm)                                     STATUS(Running)\n\n# Get the channel name\nrunmqsc secureapphelm\nDISPLAY CHANNEL (*) CHLTYPE(SVRCONN)\n\n# AMQ8414I: Display Channel details.\n#    CHANNEL(DEV.APP.SVRCONN)                CHLTYPE(SVRCONN)\nexit\n```\n\nAccess the IBM MQ console\n-------------------------\n\nUsing the load balancer IP address from earlier, visit:\n\n[https://{IP_address}:9443/ibmmq/console/#/](https://{IP_address}:9443/ibmmq/console/#/)\n\nLogin with `admin` / `passw0rd` for the default admin credentials.\n\nDeploy a logic app standard\n---------------------------\n\nConfigure the private CA certificate for the MQ server\n\n- Copy the server.crt and rename to server.cer\n- Upload server.cer to the logic app under Settings / Certificates / Public Key Certificates (.cer)\n- Copy the thumbprint of the public key certificate\n- Under Settings / Configuration, add a new variable \"WEBSITE_LOAD_ROOT_CERTIFICATES\" with the value of the public key certificate thumbprint\n\n### Add workflow - Message Queue trigger (input from a MQ queue, write to another MQ queue)\n\nCreate a new Logic App workflow (see completed worklflow [`ibmmq-workflow.json`](./ibmmq-workflow.json)).\n\n- Add a MQ trigger (polling every 1 minute) with a new MQ connection settings:\n\n  - mq_channelName = DEV.APP.SVRCONN\n  - mq_connectAs = app\n  - mq_connectionTimeoutSeconds = 60\n  - mq_maxConnections = 10\n  - mq_password = passw0rd\n  - mq_portNumber = 1414\n  - mq_queueManagerName = secureapphelm\n  - mq_serverName = \u003cload_balancer_IP_address\u003e\n  - mq_userName = app\n  - mq_useTLS = True\n\n- Retrieve multiple messages (50 max)\n- For Each trade:\n  - Add a Condition to check if notional \u003e 100000\n  - If True, Place trade in the DEMO.LARGE.TRADE queue (reuse MQ connection above)\n  - If False, Place trade in the DEMO.REGULAR.TRADE queue (reuse MQ connection above)\n\nTest the workflow:\n\n```sh\n./gen-payloads-mq.sh\n```\n\n### Add workflow - HTTP request trigger from APIM (output to a MQ queue)\n\nCreate a new Logic App workflow (see completed worklflow [`http-mq-workflow.json`](./http-mq-workflow.json)).\n\n- Add a Request (HTTP) trigger\n- Add a Condition to check if notional \u003e 100000\n- If True, Place trade in the DEMO.LARGE.TRADE queue (reuse MQ connection above)\n- If False, Place trade in the DEMO.REGULAR.TRADE queue (reuse MQ connection above)\n- Return Response 202 Accepted with the request body\n\nTest the workflow:\n\n```sh\n# Add the Logic App URL to env.sh\nsource ./env.sh\n\n./gen-payloads-http.sh\n```\n\n### (Optional) Add Workflow endpoint to API Management\n\nCreate an APIM instance\n\nAdd an endpoint to the Logic App HTTP Triggered workflow\n\nUpdate the file env.sh to use APIM endpoint instead of Logic App endpoint\n\nCleanup\n-------\n\nStop the AKS cluster to save costs:\n\n```sh\naz aks stop -n $CLUSTER_NAME -g $RESOURCE_GROUP\n```\n\nPause the MQ triggered workflow when not in use to avoid unnecessary polling, otherwise:\n\n```sh\n# Delete everything\naz group delete --name $RESOURCE_GROUP --location $LOCATION\n```\n\nResources\n---------\n\n- [Get an IBM MQ queue for development running on Azure](https://developer.ibm.com/tutorials/mq-connect-app-queue-manager-cloud-azure/) - IBM Developer\n- [IBM MQ Sample Helm Chart](https://github.com/ibm-messaging/mq-helm) - GitHub\n- [IBM MQ container](https://github.com/ibm-messaging/mq-container) - GitHub\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclarenceb%2Fapim-logicapps-mq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclarenceb%2Fapim-logicapps-mq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclarenceb%2Fapim-logicapps-mq/lists"}