From 971ec8a61788e6759e9687824addf6c86e89453f Mon Sep 17 00:00:00 2001 From: Leigh Brooks Date: Mon, 24 Mar 2025 21:34:56 +0000 Subject: [PATCH 1/6] Added RabbitMQ 4 commodity --- README.md | 2 +- scripts/docker/rabbitmq-4/Dockerfile | 19 ++++++++++++ .../rabbitmq-4/certs/ca_certificate.crt | Bin 0 -> 895 bytes .../rabbitmq-4/certs/ca_certificate.pem | 21 +++++++++++++ scripts/docker/rabbitmq-4/certs/ca_key.pem | 28 ++++++++++++++++++ .../rabbitmq-4/certs/client_certificate.pem | 21 +++++++++++++ .../docker/rabbitmq-4/certs/client_key.p12 | Bin 0 -> 2509 bytes .../docker/rabbitmq-4/certs/client_key.pem | 28 ++++++++++++++++++ .../rabbitmq-4/certs/server_certificate.pem | 23 ++++++++++++++ .../docker/rabbitmq-4/certs/server_key.p12 | Bin 0 -> 2573 bytes .../docker/rabbitmq-4/certs/server_key.pem | 28 ++++++++++++++++++ .../docker/rabbitmq-4/compose-fragment.yml | 8 +++++ .../docker-compose-fragment.3.7.yml | 9 ++++++ .../rabbitmq-4/docker-compose-fragment.yml | 9 ++++++ scripts/docker/rabbitmq-4/rabbitmq.conf | 7 +++++ snippets/app_configuration.yml | 2 +- 16 files changed, 203 insertions(+), 2 deletions(-) create mode 100644 scripts/docker/rabbitmq-4/Dockerfile create mode 100644 scripts/docker/rabbitmq-4/certs/ca_certificate.crt create mode 100644 scripts/docker/rabbitmq-4/certs/ca_certificate.pem create mode 100644 scripts/docker/rabbitmq-4/certs/ca_key.pem create mode 100644 scripts/docker/rabbitmq-4/certs/client_certificate.pem create mode 100644 scripts/docker/rabbitmq-4/certs/client_key.p12 create mode 100644 scripts/docker/rabbitmq-4/certs/client_key.pem create mode 100644 scripts/docker/rabbitmq-4/certs/server_certificate.pem create mode 100644 scripts/docker/rabbitmq-4/certs/server_key.p12 create mode 100644 scripts/docker/rabbitmq-4/certs/server_key.pem create mode 100644 scripts/docker/rabbitmq-4/compose-fragment.yml create mode 100644 scripts/docker/rabbitmq-4/docker-compose-fragment.3.7.yml create mode 100644 scripts/docker/rabbitmq-4/docker-compose-fragment.yml create mode 100644 scripts/docker/rabbitmq-4/rabbitmq.conf diff --git a/README.md b/README.md index bc96bbd..ab810e9 100644 --- a/README.md +++ b/README.md @@ -234,7 +234,7 @@ This is a directory that can contain multiple stub mappings files that Wiremock ##### RabbitMQ -There are no fragments needed when using this. The Management Console will be available on (guest/guest). +There are no fragments needed when using this. The Management Console will be available on for RabbitMQ 3, or for RabbitMQ 4 (guest/guest). Rabbit is available over port 5672 and TLS on port 5671. diff --git a/scripts/docker/rabbitmq-4/Dockerfile b/scripts/docker/rabbitmq-4/Dockerfile new file mode 100644 index 0000000..aa19d54 --- /dev/null +++ b/scripts/docker/rabbitmq-4/Dockerfile @@ -0,0 +1,19 @@ +# This is so a reset (dc down) won't remove the base rabbit image, only the one created from this dockerfile +FROM docker.io/rabbitmq:4-management +# Copy the configuration file to rabbitmq +# https://www.rabbitmq.com/configure.html#configuration-files +COPY rabbitmq.conf /etc/rabbitmq/ +# Copy certs for TLS +# Nice tool here from rabbit for generating https://github.com/rabbitmq/tls-gen +COPY certs/ca_certificate.pem certs/server_certificate.pem certs/server_key.pem certs/ +# This plugin adds a consistent-hash exchange type to RabbitMQ. This exchange type uses consistent hashing to +# distribute messages between the bound queues +RUN rabbitmq-plugins --offline enable rabbitmq_consistent_hash_exchange +# This is a RabbitMQ plugin adds message transfer and management functionality. +# Handy for tasks such as bulk moving msgs for a DLQ. +# https://www.rabbitmq.com/shovel.html +RUN rabbitmq-plugins --offline enable rabbitmq_shovel rabbitmq_shovel_management +# This is a RabbitMQ plugin that exposes streams. +# Streams are a new persistent and replicated data structure, handy to persist historic messages for a period of time +# https://www.rabbitmq.com/stream.html +RUN rabbitmq-plugins --offline enable rabbitmq_stream diff --git a/scripts/docker/rabbitmq-4/certs/ca_certificate.crt b/scripts/docker/rabbitmq-4/certs/ca_certificate.crt new file mode 100644 index 0000000000000000000000000000000000000000..019a77eab938f6f95e030459f19e01ed53737359 GIT binary patch literal 895 zcmXqLVy-r5VoF}X%*4pV#L2MP>dl$*Rp+t{c-c6$+C196^D;7WvoaX?7+M=xvN4CU zF!LCN_yoJB<^`wbqy=ZD=cT5U1m)+KI6EpB85kMq8kp-E8HE^{TbY_$85!%DnVTD$ z7#Q*zaDz0n^RTD@fq|SjuaS{~xsj2fnW?#vag;c(F_3F$3FT7RwkAd;WbZJtGB7tW z@-rATF>*0AF)}jT&wmnbW&4D~_wU=2M_#XUm6-M2UF3D4yUXQ+c~A2-in+p_t<3tp zHfe1t`Rdo;aq?iBXbQvbUn^3V^jx~b81Vj=kGE~?%H}<*{ofQTc_wZsd1WgT?gjO`M`pf>W~o{hyq1Oy`l%$Cnm5jPuM(m->Ad+`p0~ ziT}ysWgI`N&*i){yj*l|UzVtun~&6WHdVj7zWEIi8z*dhuC&e)aR#D+cl)X=N4(1F;6|3Q&_2Fb)_Q z%zP#0XNLa1@gc#(ZS}^dVx4*QmzJkVehZGjCdqLn>|K+=hJZVJA5EM-|Et@axe9MD zn5QmTr9J=j;<@Jw3m$p(m%N&=szae{b`}G_D68mmjRlGwY_U@}noL}j{UhVS!X082YiqsgckQpoHM;NXZRRge<=B3E?gC!Dd9yC& zh}JT8M91G+8k``M9meu{<(qx;%{RL6NC`VRmMO;f}G literal 0 HcmV?d00001 diff --git a/scripts/docker/rabbitmq-4/certs/ca_certificate.pem b/scripts/docker/rabbitmq-4/certs/ca_certificate.pem new file mode 100644 index 0000000..1273549 --- /dev/null +++ b/scripts/docker/rabbitmq-4/certs/ca_certificate.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDezCCAmOgAwIBAgIJALM67Mx3qs5qMA0GCSqGSIb3DQEBCwUAMEwxOzA5BgNV +BAMMMlRMU0dlblNlbGZTaWduZWR0Um9vdENBIDIwMjItMDctMjJUMTc6NTc6MjMu +Njc3MTQwMQ0wCwYDVQQHDAQkJCQkMB4XDTIyMDcyMjE2NTcyM1oXDTMyMDcxOTE2 +NTcyM1owTDE7MDkGA1UEAwwyVExTR2VuU2VsZlNpZ25lZHRSb290Q0EgMjAyMi0w +Ny0yMlQxNzo1NzoyMy42NzcxNDAxDTALBgNVBAcMBCQkJCQwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQDfb+RXOj3kCE397cnE665FGJr3RxTrcUdE08Fu +5W8ocwpXQzo2j0qyKrJ09U6ASMnBhhVkALv6qGWkjNLcAVDv+kxLPV2pg7yrT+xz +IklhtsUkkko9GHV++2mWvbW1cFWZR38trUjrEVPO3zoclJTwAO6B4u48ZhFocxie +Gpg28fHVnKf/Z6ziMAu54kLRbCNM2F3/XUl0l/A4l4uyCRVaEZRq/v+TaMYs4hLx +6TgsAZ43daVO9xG/qQRiD+Sjpgj5e85s6THTct6+ahU2Rkwa1wYlGbSCIq8QaGop +1R7+J9PLwWmiQWriHUHccegNGhwmcv456gFgB8EldgYBpUOXAgMBAAGjYDBeMA8G +A1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBQAMB5YaNLrhwjn +NPLo8xefe+eF1DAfBgNVHSMEGDAWgBQAMB5YaNLrhwjnNPLo8xefe+eF1DANBgkq +hkiG9w0BAQsFAAOCAQEANk0Yn2lV+9jwYEhGq7HlFoluf9KnZhn2U1/WGQjUVu6C +MLBQ3L3ikZef9UacnSDt0DdlpKorn8ujnc9xcOJKj3TqkKqIIHabagAPFQUV5yig +IYgGXZWxNJGia/ho4KG43F7HOh6MaZyHAT9fWsUKhzXeUDFHXGHjV4WFfyX3K/XH +KIvfLrMPd2UIt9udoA0unprRbBRLCRHmV8RUYvIqCT+VWH29GWz4CpvpZqlDP7uC +3zaLzb88jQg9zjCh7sDFt+em/1dRRJ54PpgddFtf2qVTYBJrVgTrqey+nzewnAAd +fTb+ZUIjQNlpoek8gz/5oQtNSDAuZVa52/VAFXh1/g== +-----END CERTIFICATE----- diff --git a/scripts/docker/rabbitmq-4/certs/ca_key.pem b/scripts/docker/rabbitmq-4/certs/ca_key.pem new file mode 100644 index 0000000..36ac740 --- /dev/null +++ b/scripts/docker/rabbitmq-4/certs/ca_key.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDfb+RXOj3kCE39 +7cnE665FGJr3RxTrcUdE08Fu5W8ocwpXQzo2j0qyKrJ09U6ASMnBhhVkALv6qGWk +jNLcAVDv+kxLPV2pg7yrT+xzIklhtsUkkko9GHV++2mWvbW1cFWZR38trUjrEVPO +3zoclJTwAO6B4u48ZhFocxieGpg28fHVnKf/Z6ziMAu54kLRbCNM2F3/XUl0l/A4 +l4uyCRVaEZRq/v+TaMYs4hLx6TgsAZ43daVO9xG/qQRiD+Sjpgj5e85s6THTct6+ +ahU2Rkwa1wYlGbSCIq8QaGop1R7+J9PLwWmiQWriHUHccegNGhwmcv456gFgB8El +dgYBpUOXAgMBAAECggEAAxCi3jtzS+R9RWV0phnhixsaTRgRhmVIZ/5LofzNuI1T +b/0BGGyAxs7lIcuXpxTYh6oSMwv7iCW1NzujTNdLx+70Cvgth7zB4su236FxxkBe +lfDXydzDB9nlCedSTcnbsr2TVgoRfQAA2U6gmnHDVUN+AhQd1oBD7t3dUZXlzqMe +bznn/CzHXonhHbHT79KbZHgb1lJGZQapjUGdwmAdjLt+flJcD7SCYabG/4tfwo/c +L7EKeJb3Pye3mdVvs6sLMyPmrTxaT5PILllFwbzmcuoTmWi3AZ4e6qwygpGvtXLo +oOlZfuShdXz2MCoG7KUEX/kgwHZy5jUivxyn7aqOAQKBgQD7kqEr87WJAhJ6TgFL +T4ndmTYYuExEfIAu4D9UFuEiFH04GSMcT5RUpyZc20rIaL4sz8FVHYffqXbK24pl +ScD2wtsb6sm9+tadtNxnihd2z5nT0z4SYYu13ImOWGeEri2UDXu0vnwCA9ULCq5w +Sj9gyYxlZykTElW4C2gjhSlClwKBgQDjXoHU3jONJYa+QAqlmIKIB37fftkAnKsY +yjN6hvlFU4U0OI6bxYSvjfIzSp/GEEHOXWNlFfkRBR7uMRUmMPYxxPq73c61pVO1 +d6BxTOK/tHNwi0pJeNRUYonyqlwnOwOfwkPh0BYudV7NbArq5eWMGGo8G5hkStZ/ +feQDbUEnAQKBgQDHXgeuTkAiaOr91A3AgjMu03mEk6GVcNkgzQRC/rLCEFy/9WPW +ztYtVB3Z3svgEOoNl0OO0Y1ZWfJThzKhXJa4t+lusV3Z2gz1BFzbDRvVQ2aT8Uey +x20x3amBjlvTUTm7qAfOUFr0Odc/HeLqCF07td42ik+J1rDp3thTtfbh1wKBgFnT +6K9U6kEFZmqbmpk527gqXfGmh806GE6+8/+ge7LsAGBVR+I68uT4y4uAHAeAPL9v +Hem9+JzEzSeFtLlV9q5LCFRYmWYiXyP+kyCwI5VhkYoRPdQxLJH6LE33CFlnc1MW +yQLZ1ymbrUyzNsz+7uWeb7o3nMli18Oe1QqVi3wBAoGBAOIMYwFP5aYXktN9rYS+ +XQdKWy1PbetdAsEklf84J351A2Ggh+X7rE/eBvOySLEqncsaWXytZN0HBE6m5ztN +XFe/N/jU3m4buefmFukznnTkhuu70lS/RBqWy+2IgRwO5l6sUrbst4VypJCi1xTD +ExD4m0ADahDs3x+k60BL7x82 +-----END PRIVATE KEY----- diff --git a/scripts/docker/rabbitmq-4/certs/client_certificate.pem b/scripts/docker/rabbitmq-4/certs/client_certificate.pem new file mode 100644 index 0000000..dfe51cc --- /dev/null +++ b/scripts/docker/rabbitmq-4/certs/client_certificate.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDhzCCAm+gAwIBAgIBAjANBgkqhkiG9w0BAQsFADBMMTswOQYDVQQDDDJUTFNH +ZW5TZWxmU2lnbmVkdFJvb3RDQSAyMDIyLTA3LTIyVDE3OjU3OjIzLjY3NzE0MDEN +MAsGA1UEBwwEJCQkJDAeFw0yMjA3MjIxNjU3MjRaFw0zMjA3MTkxNjU3MjRaMCQx +ETAPBgNVBAMMCHJhYmJpdG1xMQ8wDQYDVQQKDAZjbGllbnQwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQDItDPr/y3UgpGrHOce2DtSVXHfWaoQ0NLrff1y +RUAGKl1wR2C6WNeyXxA3e8Nee22aRE7S78A99uj6PscnbuboMvSopaTXBF6tFjCL +eql+01YrzSYGMRhomse8Nm7INzMMO9g6JH8Uer0ddiIa+DAS3o6+6N507oXJUAvV +jwTn91OkIidWLbR7Ma7tcrLQ8lpHSliNqXNut26QJ04hHgXlZRWapajqbhxwxvBr ++FuVw0GOyKUeYCnnY++lZGwZ9UP9qjcd9lb15jEOkHHqyJVOqByKrJbbKd2c3ZQD +Sn1vkj8idXn4yvQrRxEaF7mqce2FxprHfPWPT5321COr4hpnAgMBAAGjgZswgZgw +CQYDVR0TBAIwADALBgNVHQ8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwNwYD +VR0RBDAwLoIIcmFiYml0bXGCF0FuZHlzLU1hY0Jvb2stUHJvLmxvY2Fsgglsb2Nh +bGhvc3QwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL2xvY2FsaG9zdDo4MDAwL2Jh +c2ljLmNybDANBgkqhkiG9w0BAQsFAAOCAQEAXH4BlV00gvdPrAdp2UuF0G6VAKgr +KesZ0lsVBx5jCNskeXkI1SU3BvfltrfY2PKaWVA0Sow+4jiZkLnFkC581AmlvEPg +SgW0S/STdWojWrt3apBloIfapE++jQzcs3ATnaDeOQvb/fW/MUPZEuZfFn7wiX59 +c0obO1rqix5Qyf1JXyy38oh/4SdqeEXsI3l26qSmE7x41YbXv0d5wp+p6dXrut5n +go/cC4TszSHb+/b6Nh+fFiPojqMDEpt5biTyZhGkJMIFrO9MvHnK6w9d9RUYRv3x +aZ94ouB/16wit5ZUMGkFNPlHwwxKC7Aqare6PNzVi6RsIf4tZtgIzSvokg== +-----END CERTIFICATE----- diff --git a/scripts/docker/rabbitmq-4/certs/client_key.p12 b/scripts/docker/rabbitmq-4/certs/client_key.p12 new file mode 100644 index 0000000000000000000000000000000000000000..c521ee76d1c5ed2bd9c6dcb7b23aab0ca4efb85d GIT binary patch literal 2509 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 literal 0 HcmV?d00001 diff --git a/scripts/docker/rabbitmq-4/certs/server_key.pem b/scripts/docker/rabbitmq-4/certs/server_key.pem new file mode 100644 index 0000000..80aa4c3 --- /dev/null +++ b/scripts/docker/rabbitmq-4/certs/server_key.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCn4YdhQYOXFt+X +zwFU2X53FDMLlQBO42vHod086nyvcRiEoTVNCgNvCTcsl3aKamfCzFIcshTtGaWc +Qyok1CEal3jig4Gx66tr5x1zZV+eAz2HqaJkW4BRgxm6jYKo6PlihF607c2O9TPl +Zwndl16+0476yPmEKFOITxYa0lykLsqkpWTeDgUoaqi15SRhj4i2Pz2v52aPL2zc +G685QCM40wA0+zK5fyncZ54/PdoyWI+ofapASnY2MZCQ/ty3lsG8G0MAA57zBqid +YWJ51MH2PO/Di6mmCwIC+aaonUrW0GrtdVDz8qyrDOVIxPHAUuk0OGiIdtFU02pX +j/BXlrhPAgMBAAECggEBAImRFkWM0M7TUH9ugpHL84SSic2Y2HrMgvpAWjFbmLaO +/19XVnz9kpi/PXYN23ZLASGwGi0nhFxR4tJsezFYnpPSwZ0j0/g+vOabqRdxX2v1 +DcuIJukDzd99hWzIHuRYnFqtS4oJP6NArLjzuTLaoinO5F/+pfA0t1aAMAXkkUN7 +PJClX1/7/OD9bqC9+TvAWhGWJflSLm5A+OG44hwvuSsH7UTkyotgqbO9Xmm5N/e5 +k4ZwwmA+wRxlVXcA1EcfH0gL8FOW3sRKaAjXl+6ssM9M7ueo1ESOxJCLaUpH4o/E +djITFezXf6BRTx8OEI7q+77KnpBx+xWccymH7TYr0WECgYEA0L/34HQFIu5Qnn0O +NVoP6SQshypPXdtFfzXU3z07va1ZZXw2+6GR/ObRN7jaCPoa70cyzyZVtZouUbTt +47+pgIpdZ51rN+1xVW09247ikcDQWWnBXfuOus1QS0vlb/eYsoDUI5ZGIle93IHD +NtiVVBY+ESUdhcMOEZIjlec36n8CgYEAzeFocGt8pSrGQy+1PufgYkg3sne7F2Wy +Er4gd8MSZnm90XFJHuZ8wsTEy+wpVnJqAqy2wIj8yauy2L/wmUlKxpUhtWxfFTNy +BPEmY2XatqfyYqU+L3oiT44ZKXQeTDQKcuLahhMZAC9Bq5/ef9VKMyl0eotJ3x5H +eyaMs/2WKjECgYBtkLSrzHl9shQCe6Tff9vmBKSSdTSfEJ3TfQ+z9FHM5pWLXL0H +KfCUCxo44v8dwxgsCvSyIW7PGJPDMvHBnjF7VCReZBOIkUnxCptzB/YHhmpU49so +Vwa9KVJBkx5jvFMbLd8qpo89K0xt1nX97YPDVMFTAmYSdSSHOGsRHQEORQKBgE25 +uZonmkko2uzmiACVveqc5RolhaaRqCbXTJ6qMLorX/RAVqCp15QYgUuTfw+55jfY +SK5riTQB9GVMIWNdfjN2feFmZoc0gulGuX1xKJ8ozKNdSxrVezqZpPo3cnDGfONe +ra1MbHXbYWmP04pjVb32+piBGYR4g/gEV75kEFshAoGAIyB7U8UC/yup071aVNVG +M+Ss9bZ4HvS//VMuPvMs8Jg2+BcLIbtbW1MKrw3nTsYUoDLgx2U7IK4Ys2JKpeko +yXm5nLHu45hrjTxgcBUncwAURkm5Ookfp0WJEonjniN+8BPx0i8it6gsB5fJwzy0 +VH6ZcPshp2KRGIZNaXrgtRw= +-----END PRIVATE KEY----- diff --git a/scripts/docker/rabbitmq-4/compose-fragment.yml b/scripts/docker/rabbitmq-4/compose-fragment.yml new file mode 100644 index 0000000..f60f014 --- /dev/null +++ b/scripts/docker/rabbitmq-4/compose-fragment.yml @@ -0,0 +1,8 @@ +services: + rabbitmq-4: + container_name: rabbitmq-4 + build: ../scripts/docker/rabbitmq-4/ + ports: + - 15682:15672 + - 5682:5672 + - 5681:5671 \ No newline at end of file diff --git a/scripts/docker/rabbitmq-4/docker-compose-fragment.3.7.yml b/scripts/docker/rabbitmq-4/docker-compose-fragment.3.7.yml new file mode 100644 index 0000000..be1ce6f --- /dev/null +++ b/scripts/docker/rabbitmq-4/docker-compose-fragment.3.7.yml @@ -0,0 +1,9 @@ +version: '3.7' +services: + rabbitmq: + container_name: rabbitmq + build: ../scripts/docker/rabbitmq/ + ports: + - 15682:15672 + - 5682:5672 + - 5681:5671 diff --git a/scripts/docker/rabbitmq-4/docker-compose-fragment.yml b/scripts/docker/rabbitmq-4/docker-compose-fragment.yml new file mode 100644 index 0000000..d39c452 --- /dev/null +++ b/scripts/docker/rabbitmq-4/docker-compose-fragment.yml @@ -0,0 +1,9 @@ +version: '2' +services: + rabbitmq: + container_name: rabbitmq + build: ../scripts/docker/rabbitmq/ + ports: + - 15682:15672 + - 5682:5672 + - 5681:5671 \ No newline at end of file diff --git a/scripts/docker/rabbitmq-4/rabbitmq.conf b/scripts/docker/rabbitmq-4/rabbitmq.conf new file mode 100644 index 0000000..2036fc7 --- /dev/null +++ b/scripts/docker/rabbitmq-4/rabbitmq.conf @@ -0,0 +1,7 @@ +listeners.ssl.default = 5671 + +ssl_options.cacertfile = /certs/ca_certificate.pem +ssl_options.certfile = /certs/server_certificate.pem +ssl_options.keyfile = /certs/server_key.pem +ssl_options.verify = verify_none +ssl_options.fail_if_no_peer_cert = false diff --git a/snippets/app_configuration.yml b/snippets/app_configuration.yml index 0d6469b..f8e9f4e 100644 --- a/snippets/app_configuration.yml +++ b/snippets/app_configuration.yml @@ -1,5 +1,5 @@ --- -commodities: ["postgres-17", "elasticsearch5", "rabbitmq", "db2_community"] +commodities: ["postgres-17", "elasticsearch5", "rabbitmq-4", "db2_community"] # Optional expensive_startup: - compose_service: name-of-service-from-compose-fragment From bc93669ad22b97f618a2aa1d80e7176b00991d4f Mon Sep 17 00:00:00 2001 From: Leigh Brooks Date: Mon, 24 Mar 2025 21:39:06 +0000 Subject: [PATCH 2/6] Updated readme --- README.md | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index ab810e9..296ab7c 100644 --- a/README.md +++ b/README.md @@ -131,16 +131,17 @@ The list of allowable commodity values is: 5. elasticsearch7 6. nginx 7. rabbitmq -8. redis -9. swagger -10. wiremock -11. squid -12. auth -13. cadence -14. cadence-web -15. activemq -16. ibmmq -17. localstack +8. rabbitmq-4 +9. redis +10. swagger +11. wiremock +12. squid +13. auth +14. cadence +15. cadence-web +16. activemq +17. ibmmq +18. localstack The file may optionally also indicate that one or more services are resource intensive ("expensive") when starting up. The dev env will start those containers seperately - 3 at a time - and wait until each are declared healthy (or crash and get restarted 10 times) before starting any more. @@ -236,7 +237,7 @@ This is a directory that can contain multiple stub mappings files that Wiremock There are no fragments needed when using this. The Management Console will be available on for RabbitMQ 3, or for RabbitMQ 4 (guest/guest). -Rabbit is available over port 5672 and TLS on port 5671. +RabbitMQ 3 is available over port 5672 and TLS on port 5671. RabbitMQ 4 is available over port 5682 and TLS on port 5681. TLS presents a self signed cert. If verification is needed a copy of the ca certificate is [here](scripts/docker/rabbitmq/certs/ca_certificate.crt). The host has been set to `rabbitmq` for host verification in most common libraries, although will only work within the docker network. From fe9c53dc0a02f6ec6e247242113496db795d786f Mon Sep 17 00:00:00 2001 From: Leigh Brooks Date: Wed, 11 Mar 2026 11:47:54 +0000 Subject: [PATCH 3/6] Removed unnecessary compose fragments and amended Dockerfile for prometheus --- scripts/docker/rabbitmq-4/Dockerfile | 3 ++- .../docker/rabbitmq-4/docker-compose-fragment.3.7.yml | 9 --------- scripts/docker/rabbitmq-4/docker-compose-fragment.yml | 9 --------- 3 files changed, 2 insertions(+), 19 deletions(-) delete mode 100644 scripts/docker/rabbitmq-4/docker-compose-fragment.3.7.yml delete mode 100644 scripts/docker/rabbitmq-4/docker-compose-fragment.yml diff --git a/scripts/docker/rabbitmq-4/Dockerfile b/scripts/docker/rabbitmq-4/Dockerfile index aa19d54..efa44b3 100644 --- a/scripts/docker/rabbitmq-4/Dockerfile +++ b/scripts/docker/rabbitmq-4/Dockerfile @@ -16,4 +16,5 @@ RUN rabbitmq-plugins --offline enable rabbitmq_shovel rabbitmq_shovel_management # This is a RabbitMQ plugin that exposes streams. # Streams are a new persistent and replicated data structure, handy to persist historic messages for a period of time # https://www.rabbitmq.com/stream.html -RUN rabbitmq-plugins --offline enable rabbitmq_stream +RUN rabbitmq-plugins --offline enable rabbitmq_stream && \ + rabbitmq-plugins --offline enable rabbitmq_prometheus \ No newline at end of file diff --git a/scripts/docker/rabbitmq-4/docker-compose-fragment.3.7.yml b/scripts/docker/rabbitmq-4/docker-compose-fragment.3.7.yml deleted file mode 100644 index be1ce6f..0000000 --- a/scripts/docker/rabbitmq-4/docker-compose-fragment.3.7.yml +++ /dev/null @@ -1,9 +0,0 @@ -version: '3.7' -services: - rabbitmq: - container_name: rabbitmq - build: ../scripts/docker/rabbitmq/ - ports: - - 15682:15672 - - 5682:5672 - - 5681:5671 diff --git a/scripts/docker/rabbitmq-4/docker-compose-fragment.yml b/scripts/docker/rabbitmq-4/docker-compose-fragment.yml deleted file mode 100644 index d39c452..0000000 --- a/scripts/docker/rabbitmq-4/docker-compose-fragment.yml +++ /dev/null @@ -1,9 +0,0 @@ -version: '2' -services: - rabbitmq: - container_name: rabbitmq - build: ../scripts/docker/rabbitmq/ - ports: - - 15682:15672 - - 5682:5672 - - 5681:5671 \ No newline at end of file From 6e1b15357cc695f036dd65dfcf717f132c3fda0f Mon Sep 17 00:00:00 2001 From: Leigh Brooks Date: Thu, 12 Mar 2026 09:11:43 +0000 Subject: [PATCH 4/6] Switch to alpine image --- scripts/docker/rabbitmq-4/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/docker/rabbitmq-4/Dockerfile b/scripts/docker/rabbitmq-4/Dockerfile index efa44b3..6743cb6 100644 --- a/scripts/docker/rabbitmq-4/Dockerfile +++ b/scripts/docker/rabbitmq-4/Dockerfile @@ -1,5 +1,5 @@ # This is so a reset (dc down) won't remove the base rabbit image, only the one created from this dockerfile -FROM docker.io/rabbitmq:4-management +FROM docker.io/rabbitmq:4.2-management-alpine # Copy the configuration file to rabbitmq # https://www.rabbitmq.com/configure.html#configuration-files COPY rabbitmq.conf /etc/rabbitmq/ @@ -17,4 +17,4 @@ RUN rabbitmq-plugins --offline enable rabbitmq_shovel rabbitmq_shovel_management # Streams are a new persistent and replicated data structure, handy to persist historic messages for a period of time # https://www.rabbitmq.com/stream.html RUN rabbitmq-plugins --offline enable rabbitmq_stream && \ - rabbitmq-plugins --offline enable rabbitmq_prometheus \ No newline at end of file + rabbitmq-plugins --offline enable rabbitmq_prometheus From d1a34bcb510fdd294b3c5e89f566a901bbfd823b Mon Sep 17 00:00:00 2001 From: Leigh Brooks Date: Mon, 23 Mar 2026 09:25:45 +0000 Subject: [PATCH 5/6] Amended default queue type to quorum --- scripts/docker/rabbitmq-4/rabbitmq.conf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/docker/rabbitmq-4/rabbitmq.conf b/scripts/docker/rabbitmq-4/rabbitmq.conf index 2036fc7..2ffdf2a 100644 --- a/scripts/docker/rabbitmq-4/rabbitmq.conf +++ b/scripts/docker/rabbitmq-4/rabbitmq.conf @@ -5,3 +5,6 @@ ssl_options.certfile = /certs/server_certificate.pem ssl_options.keyfile = /certs/server_key.pem ssl_options.verify = verify_none ssl_options.fail_if_no_peer_cert = false + +# To ensure common behaviour with RabbitMQ on Amazon MQ, the broker-wide default is set to quorum +default_queue_type = quorum \ No newline at end of file From daa47559ceff405c223bcabc2b6080df876ec5ca Mon Sep 17 00:00:00 2001 From: Leigh Brooks Date: Mon, 23 Mar 2026 09:36:27 +0000 Subject: [PATCH 6/6] Amended the readme to reflect differences between rabbitmq 3 and 4 --- README.md | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 7953a45..3701de5 100644 --- a/README.md +++ b/README.md @@ -221,11 +221,11 @@ This is a file that contains stub mappings that Wiremock will pick up and use, a This is a directory that can contain multiple stub mappings files that Wiremock will pick up and use. The files should all be in the same format as the example above. If such a wiremock directory exists, it will take precedence over any `wiremock-fragment.json` file. -##### RabbitMQ +##### RabbitMQ 3 -There are no fragments needed when using this. The Management Console will be available on for RabbitMQ 3, or for RabbitMQ 4 (guest/guest). +There are no fragments needed when using this. The Management Console will be available on (guest/guest). -RabbitMQ 3 is available over port 5672 and TLS on port 5671. RabbitMQ 4 is available over port 5682 and TLS on port 5681. +RabbitMQ 3 is available over port 5672 and TLS on port 5671. TLS presents a self signed cert. If verification is needed then use the provided [ca certificate](scripts/docker/rabbitmq/certs/ca_certificate.crt). The host has been set to `rabbitmq` for host verification in most common libraries, although will only work within the docker network. @@ -233,6 +233,22 @@ MTLS is not enabled, although a [client certificate pem](scripts/docker/rabbitmq Currently, only the `rabbitmq_management`, `rabbitmq_consistent_hash_exchange`, `rabbitmq_shovel`, `rabbitmq_shovel_management`, `rabbitmq_stream` and `rabbitmq_prometheus` plugins are enabled. +The default queue type for queues in RabbitMQ 3 is `classic`. + +##### RabbitMQ 4 + +There are no fragments needed when using this. The Management Console will be available on (guest/guest). + +RabbitMQ 4 is available over port 5682 and TLS on port 5681. + +TLS presents a self signed cert. If verification is needed then use the provided [ca certificate](scripts/docker/rabbitmq/certs/ca_certificate.crt). The host has been set to `rabbitmq` for host verification in most common libraries, although will only work within the docker network. + +MTLS is not enabled, although a [client certificate pem](scripts/docker/rabbitmq/certs/client_certificate.pem) and [client key pem](scripts/docker/rabbitmq/certs/client_key.pem) have been generated as part of the certificate set for potential future use. + +Currently, only the `rabbitmq_management`, `rabbitmq_consistent_hash_exchange`, `rabbitmq_shovel`, `rabbitmq_shovel_management`, `rabbitmq_stream` and `rabbitmq_prometheus` plugins are enabled. + +The default queue type for queues in RabbitMQ 4 is `quorum`. + ##### ActiveMQ There are no fragments needed when using this. The Management Console will be available on (admin/admin).