initial commit
This commit is contained in:
6
dev/rabbitmq/README.md
Normal file
6
dev/rabbitmq/README.md
Normal file
@@ -0,0 +1,6 @@
|
||||
#aanmaken berichten
|
||||
|
||||
Let op , de service in de YAML-file is bewust een nodeport.
|
||||
Kijk even op welke poort interne poort 5672 wordt geforward en gebruk die in
|
||||
het GO-programmaatje.
|
||||
|
||||
19
dev/rabbitmq/catalog-info.yaml
Normal file
19
dev/rabbitmq/catalog-info.yaml
Normal file
@@ -0,0 +1,19 @@
|
||||
apiVersion: backstage.io/v1alpha1
|
||||
kind: Component
|
||||
metadata:
|
||||
name: dev-rabbitmq
|
||||
title: rabbitmq (dev)
|
||||
description: rabbitmq instance running in Kubernetes
|
||||
annotations:
|
||||
backstage.io/kubernetes-label-selector: "app=rabbitmq"
|
||||
links:
|
||||
- url: https://github.com/AllardKrings/kubernetes/dev/rabbitmq
|
||||
title: rabbitmq-configuration
|
||||
docs:
|
||||
- url: ./README.md
|
||||
spec:
|
||||
type: service
|
||||
lifecycle: production
|
||||
owner: group:default/allarddcs
|
||||
subcomponentOf: component:default/DEV-cluster
|
||||
|
||||
55
dev/rabbitmq/consumer.go
Executable file
55
dev/rabbitmq/consumer.go
Executable file
@@ -0,0 +1,55 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
"github.com/streadway/amqp"
|
||||
)
|
||||
|
||||
func failOnError(err error, msg string) {
|
||||
if err != nil {
|
||||
log.Fatalf("%s: %s", msg, err)
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/")
|
||||
failOnError(err, "Failed to connect to RabbitMQ")
|
||||
defer conn.Close()
|
||||
|
||||
ch, err := conn.Channel()
|
||||
failOnError(err, "Failed to open a channel")
|
||||
defer ch.Close()
|
||||
|
||||
q, err := ch.QueueDeclare(
|
||||
"Dial-DCS-queue", // name
|
||||
true, // durable
|
||||
false, // delete when unused
|
||||
false, // exclusive
|
||||
false, // no-wait
|
||||
nil, // arguments
|
||||
)
|
||||
failOnError(err, "Failed to declare a queue")
|
||||
|
||||
msgs, err := ch.Consume(
|
||||
q.Name, // queue
|
||||
"", // consumer
|
||||
true, // auto-ack
|
||||
false, // exclusive
|
||||
false, // no-local
|
||||
false, // no-wait
|
||||
nil, // args
|
||||
)
|
||||
failOnError(err, "Failed to register a consumer")
|
||||
|
||||
forever := make(chan bool)
|
||||
|
||||
go func() {
|
||||
for d := range msgs {
|
||||
log.Printf("Received a message: %s", d.Body)
|
||||
}
|
||||
}()
|
||||
|
||||
log.Printf(" [*] Waiting for messages. To exit press CTRL+C")
|
||||
<-forever
|
||||
}
|
||||
8
dev/rabbitmq/go.mod
Executable file
8
dev/rabbitmq/go.mod
Executable file
@@ -0,0 +1,8 @@
|
||||
module rabbitmq
|
||||
|
||||
go 1.17
|
||||
|
||||
require (
|
||||
github.com/rabbitmq/amqp091-go v1.10.0 // indirect
|
||||
github.com/streadway/amqp v1.0.0 // indirect
|
||||
)
|
||||
21
dev/rabbitmq/go.sum
Executable file
21
dev/rabbitmq/go.sum
Executable file
@@ -0,0 +1,21 @@
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/rabbitmq/amqp091-go v1.8.1 h1:RejT1SBUim5doqcL6s7iN6SBmsQqyTgXb1xMlH0h1hA=
|
||||
github.com/rabbitmq/amqp091-go v1.8.1/go.mod h1:+jPrT9iY2eLjRaMSRHUhc3z14E/l85kv/f+6luSD3pc=
|
||||
github.com/rabbitmq/amqp091-go v1.10.0 h1:STpn5XsHlHGcecLmMFCtg7mqq0RnD+zFr4uzukfVhBw=
|
||||
github.com/rabbitmq/amqp091-go v1.10.0/go.mod h1:Hy4jKW5kQART1u+JkDTF9YYOQUHXqMuhrgxOEeS7G4o=
|
||||
github.com/streadway/amqp v1.0.0 h1:kuuDrUJFZL1QYL9hUNuCxNObNzB0bV/ZG5jV3RWAQgo=
|
||||
github.com/streadway/amqp v1.0.0/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||
go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
6
dev/rabbitmq/mqsend-py.sh
Executable file
6
dev/rabbitmq/mqsend-py.sh
Executable file
@@ -0,0 +1,6 @@
|
||||
while true; do
|
||||
python3 sendMessage.py
|
||||
sleep 10
|
||||
done
|
||||
|
||||
|
||||
6
dev/rabbitmq/mqsend.sh
Executable file
6
dev/rabbitmq/mqsend.sh
Executable file
@@ -0,0 +1,6 @@
|
||||
while true; do
|
||||
go run sendMessage.go
|
||||
sleep 10
|
||||
done
|
||||
|
||||
|
||||
135
dev/rabbitmq/rabbitmq.yaml
Executable file
135
dev/rabbitmq/rabbitmq.yaml
Executable file
@@ -0,0 +1,135 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: rabbitmq
|
||||
namespace: rabbitmq
|
||||
labels:
|
||||
app: rabbitmq
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: rabbitmq
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: rabbitmq
|
||||
spec:
|
||||
containers:
|
||||
- name: rabbitmq
|
||||
image: rabbitmq:3-management-alpine
|
||||
volumeMounts:
|
||||
- mountPath: /var/lib/rabbitmq
|
||||
name: rabbitmq
|
||||
subPath: rabbitmq/data
|
||||
- mountPath: /var/log/rabbitmq
|
||||
name: rabbitmq
|
||||
subPath: rabbitmq/log
|
||||
volumes:
|
||||
- name: rabbitmq
|
||||
persistentVolumeClaim:
|
||||
claimName: rabbitmq-pvc
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: rabbitmq
|
||||
namespace: rabbitmq
|
||||
spec:
|
||||
ports:
|
||||
- name: port1
|
||||
targetPort: 5672
|
||||
port: 5672
|
||||
- name: port2
|
||||
targetPort: 15672
|
||||
port: 15672
|
||||
- name: port3
|
||||
targetPort: 55670
|
||||
port: 55670
|
||||
- name: port4
|
||||
targetPort: 55674
|
||||
port: 55674
|
||||
selector:
|
||||
app: rabbitmq
|
||||
type: NodePort
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: PersistentVolume
|
||||
metadata:
|
||||
name: rabbitmq-pv
|
||||
spec:
|
||||
storageClassName: ""
|
||||
capacity:
|
||||
storage: 1Gi
|
||||
accessModes:
|
||||
- ReadWriteMany
|
||||
persistentVolumeReclaimPolicy: Retain
|
||||
mountOptions:
|
||||
- hard
|
||||
- nfsvers=4.1
|
||||
nfs:
|
||||
server: 192.168.2.110
|
||||
path: /mnt/nfs_share/rabbitmq
|
||||
readOnly: false
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: rabbitmq-pvc
|
||||
namespace: rabbitmq
|
||||
spec:
|
||||
storageClassName: ""
|
||||
volumeName: rabbitmq-pv
|
||||
accessModes:
|
||||
- ReadWriteMany
|
||||
volumeMode: Filesystem
|
||||
resources:
|
||||
requests:
|
||||
storage: 1Gi
|
||||
---
|
||||
apiVersion: traefik.io/v1alpha1
|
||||
kind: IngressRoute
|
||||
metadata:
|
||||
name: rabbitmq-http
|
||||
namespace: rabbitmq
|
||||
spec:
|
||||
entryPoints:
|
||||
- web
|
||||
routes:
|
||||
- match: Host(`rabbitmq-prod.allarddcs.nl`)
|
||||
kind: Rule
|
||||
services:
|
||||
- name: rabbitmq
|
||||
port: 15672
|
||||
---
|
||||
apiVersion: traefik.io/v1alpha1
|
||||
kind: IngressRoute
|
||||
metadata:
|
||||
name: rabbitmq-tls
|
||||
namespace: rabbitmq
|
||||
spec:
|
||||
entryPoints:
|
||||
- websecure
|
||||
routes:
|
||||
- match: Host(`rabbitmq-prod.allarddcs.nl`)
|
||||
kind: Rule
|
||||
services:
|
||||
- name: rabbitmq
|
||||
port: 15672
|
||||
- match: Host(`rabbitmqa-prod.allarddcs.nl`)
|
||||
kind: Rule
|
||||
services:
|
||||
- name: rabbitmq
|
||||
port: 5672
|
||||
tls:
|
||||
certResolver: letsencrypt
|
||||
---
|
||||
apiVersion: traefik.io/v1alpha1
|
||||
kind: Middleware
|
||||
metadata:
|
||||
name: redirect-to-https
|
||||
spec:
|
||||
redirectScheme:
|
||||
scheme: https
|
||||
permanent: true
|
||||
|
||||
31
dev/rabbitmq/recieveMessage.py
Normal file
31
dev/rabbitmq/recieveMessage.py
Normal file
@@ -0,0 +1,31 @@
|
||||
# example_consumer.py
|
||||
import pika, os, time
|
||||
|
||||
def alldcs_process_function(msg):
|
||||
# print(" ALLDCS processing")
|
||||
# print(" [x] Received " + str(msg))
|
||||
print(str(msg))
|
||||
|
||||
time.sleep(1) # delays for 5 seconds
|
||||
# print(" ALLDCS processing finished");
|
||||
return;
|
||||
|
||||
# Access the CLODUAMQP_URL environment variable and parse it (fallback to localhost)
|
||||
url = os.environ.get('CLOUDAMQP_URL', 'amqp://guest:guest@localhost:32189/%2f')
|
||||
params = pika.URLParameters(url)
|
||||
connection = pika.BlockingConnection(params)
|
||||
channel = connection.channel() # start a channel
|
||||
channel.queue_declare(queue='ALLDCS') # Declare a queue
|
||||
|
||||
# create a function which is called on incoming messages
|
||||
def callback(ch, method, properties, body):
|
||||
alldcs_process_function(body)
|
||||
|
||||
# set up subscription on the queue
|
||||
channel.basic_consume('ALLDCS',
|
||||
callback,
|
||||
auto_ack=True)
|
||||
|
||||
# start consuming (blocks)
|
||||
channel.start_consuming()
|
||||
connection.close()
|
||||
6
dev/rabbitmq/riscv/create-que.sh
Executable file
6
dev/rabbitmq/riscv/create-que.sh
Executable file
@@ -0,0 +1,6 @@
|
||||
./rabbitmqadmin --host=rabbitmq-riscv.allarddcs.nl \
|
||||
--port=443 \
|
||||
--ssl \
|
||||
--username=guest \
|
||||
--password=guest \
|
||||
declare queue name=testqueue durable=true
|
||||
150
dev/rabbitmq/riscv/rabbitmq.yaml
Executable file
150
dev/rabbitmq/riscv/rabbitmq.yaml
Executable file
@@ -0,0 +1,150 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: rabbitmq
|
||||
namespace: rabbitmq
|
||||
labels:
|
||||
app: rabbitmq
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: rabbitmq
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: rabbitmq
|
||||
spec:
|
||||
containers:
|
||||
- name: rabbitmq
|
||||
image: docker.io/riscv64/rabbitmq:3-management
|
||||
volumeMounts:
|
||||
- mountPath: /var/lib/rabbitmq
|
||||
name: rabbitmq
|
||||
subPath: rabbitmq/data
|
||||
- mountPath: /var/log/rabbitmq
|
||||
name: rabbitmq
|
||||
subPath: rabbitmq/log
|
||||
volumes:
|
||||
- name: rabbitmq
|
||||
persistentVolumeClaim:
|
||||
claimName: rabbitmq-pvc
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: rabbitmq
|
||||
namespace: rabbitmq
|
||||
spec:
|
||||
ports:
|
||||
- name: port1
|
||||
targetPort: 5672
|
||||
port: 5672
|
||||
- name: port2
|
||||
targetPort: 15672
|
||||
port: 15672
|
||||
- name: port3
|
||||
targetPort: 55670
|
||||
port: 55670
|
||||
- name: port4
|
||||
targetPort: 55674
|
||||
port: 55674
|
||||
selector:
|
||||
app: rabbitmq
|
||||
type: NodePort
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: PersistentVolume
|
||||
metadata:
|
||||
name: rabbitmq-pv
|
||||
spec:
|
||||
storageClassName: ""
|
||||
capacity:
|
||||
storage: 1Gi
|
||||
accessModes:
|
||||
- ReadWriteMany
|
||||
persistentVolumeReclaimPolicy: Retain
|
||||
mountOptions:
|
||||
- hard
|
||||
- nfsvers=4.1
|
||||
nfs:
|
||||
server: 192.168.2.110
|
||||
path: /mnt/nfs_share/rabbitmq/riscv
|
||||
readOnly: false
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: rabbitmq-pvc
|
||||
namespace: rabbitmq
|
||||
spec:
|
||||
storageClassName: ""
|
||||
volumeName: rabbitmq-pv
|
||||
accessModes:
|
||||
- ReadWriteMany
|
||||
volumeMode: Filesystem
|
||||
resources:
|
||||
requests:
|
||||
storage: 1Gi
|
||||
---
|
||||
apiVersion: traefik.containo.us/v1alpha1
|
||||
kind: IngressRoute
|
||||
metadata:
|
||||
name: rabbitmq-http
|
||||
namespace: rabbitmq
|
||||
spec:
|
||||
entryPoints:
|
||||
- web
|
||||
routes:
|
||||
- match: Host(`rabbitmq-riscv.allarddcs.nl`)
|
||||
kind: Rule
|
||||
middlewares:
|
||||
- name: redirect-to-https
|
||||
namespace: rabbitmq
|
||||
services:
|
||||
- name: rabbitmq
|
||||
port: 15672
|
||||
---
|
||||
apiVersion: traefik.containo.us/v1alpha1
|
||||
kind: IngressRoute
|
||||
metadata:
|
||||
name: rabbitmq-tls
|
||||
namespace: rabbitmq
|
||||
spec:
|
||||
entryPoints:
|
||||
- websecure
|
||||
routes:
|
||||
- match: Host(`rabbitmq-riscv.allarddcs.nl`)
|
||||
kind: Rule
|
||||
services:
|
||||
- name: rabbitmq
|
||||
port: 15672
|
||||
tls:
|
||||
certResolver: letsencrypt
|
||||
---
|
||||
apiVersion: traefik.io/v1alpha1
|
||||
kind: Middleware
|
||||
metadata:
|
||||
name: redirect-to-https
|
||||
namespace: rabbitmq
|
||||
spec:
|
||||
redirectScheme:
|
||||
scheme: https
|
||||
permanent: true
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: rabbitmq-amqp
|
||||
namespace: rabbitmq
|
||||
spec:
|
||||
type: NodePort
|
||||
ports:
|
||||
- port: 5672
|
||||
targetPort: 5672
|
||||
protocol: TCP
|
||||
nodePort: 31541 # You can specify or let k8s pick one in 30000-32767 range
|
||||
name: amqp
|
||||
selector:
|
||||
app.kubernetes.io/name: rabbitmq
|
||||
|
||||
1190
dev/rabbitmq/riscv/rabbitmqadmin
Executable file
1190
dev/rabbitmq/riscv/rabbitmqadmin
Executable file
File diff suppressed because it is too large
Load Diff
8
dev/rabbitmq/riscv/read-message.sh
Executable file
8
dev/rabbitmq/riscv/read-message.sh
Executable file
@@ -0,0 +1,8 @@
|
||||
./rabbitmqadmin \
|
||||
--host=rabbitmq-riscv.allarddcs.nl \
|
||||
--port=443 \
|
||||
--ssl \
|
||||
--username=guest \
|
||||
--password=guest \
|
||||
get queue=testqueue count=1 \
|
||||
--arguments='{"requeue":false}'
|
||||
6
dev/rabbitmq/riscv/send-message.sh
Executable file
6
dev/rabbitmq/riscv/send-message.sh
Executable file
@@ -0,0 +1,6 @@
|
||||
./rabbitmqadmin --host=rabbitmq-riscv.allarddcs.nl \
|
||||
--port=443 \
|
||||
--ssl \
|
||||
--username=guest \
|
||||
--password=guest \
|
||||
publish routing_key=testqueue payload="Hello from CLI"
|
||||
53
dev/rabbitmq/sendMessage.go
Executable file
53
dev/rabbitmq/sendMessage.go
Executable file
@@ -0,0 +1,53 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
// "github.com/streadway/amqp"
|
||||
"github.com/rabbitmq/amqp091-go"
|
||||
)
|
||||
|
||||
// Here we set the way error messages are displayed in the terminal.
|
||||
func failOnError(err error, msg string) {
|
||||
if err != nil {
|
||||
log.Fatalf("%s: %s", msg, err)
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
// Here we connect to RabbitMQ or send a message if there are any errors connecting.
|
||||
conn, err := amqp091.Dial("amqp://guest:guest@localhost:32189/")
|
||||
failOnError(err, "Failed to connect to RabbitMQ")
|
||||
defer conn.Close()
|
||||
|
||||
ch, err := conn.Channel()
|
||||
failOnError(err, "Failed to open a channel")
|
||||
defer ch.Close()
|
||||
|
||||
// We create a Queue to send the message to.
|
||||
q, err := ch.QueueDeclare(
|
||||
"ALL-DCS-queue", // name
|
||||
true, // durable
|
||||
false, // delete when unused
|
||||
false, // exclusive
|
||||
false, // no-wait
|
||||
nil, // arguments
|
||||
)
|
||||
failOnError(err, "Failed to declare a queue")
|
||||
|
||||
// We set the payload for the message.
|
||||
body := "Hallo Diederick, let's go hack!"
|
||||
err = ch.Publish(
|
||||
"", // exchange
|
||||
q.Name, // routing key
|
||||
false, // mandatory
|
||||
false, // immediate
|
||||
amqp091.Publishing{
|
||||
DeliveryMode: amqp091.Persistent,
|
||||
ContentType: "text/plain",
|
||||
Body: []byte(body),
|
||||
})
|
||||
// If there is an error publishing the message, a log will be displayed in the terminal.
|
||||
failOnError(err, "Failed to publish a message")
|
||||
log.Printf(" [x] Congrats, sending message: %s", body)
|
||||
}
|
||||
17
dev/rabbitmq/sendMessage.py
Normal file
17
dev/rabbitmq/sendMessage.py
Normal file
@@ -0,0 +1,17 @@
|
||||
# example_publisher.py
|
||||
import pika, os, logging
|
||||
logging.basicConfig()
|
||||
|
||||
# Parse CLODUAMQP_URL (fallback to localhost)
|
||||
url = os.environ.get('CLOUDAMQP_URL', 'amqp://guest:guest@localhost:32189/%2f')
|
||||
params = pika.URLParameters(url)
|
||||
params.socket_timeout = 5
|
||||
|
||||
connection = pika.BlockingConnection(params) # Connect to CloudAMQP
|
||||
channel = connection.channel() # start a channel
|
||||
channel.queue_declare(queue='ALLDCS') # Declare a queue
|
||||
# send a message
|
||||
|
||||
channel.basic_publish(exchange='', routing_key='ALLDCS', body='Hello Diederick, lets go hack!!!')
|
||||
print ("[x] Message sent to consumer")
|
||||
connection.close()
|
||||
Reference in New Issue
Block a user