Skip to content

Testing

docker-compose.yml:

version: "2.1"
services:

  rabbitmq1:
    container_name: rabbitmq1
    image: rabbitmq:3.8-management
    ports:
      - "16672:15672"
      - "6672:5672"
    environment:
      RABBITMQ_DEFAULT_USER: rabbitmq
      RABBITMQ_DEFAULT_PASS: rabbitmq
      RABBITMQ_ERLANG_COOKIE: lJzQwkzj790Pct2IUMOFsyvWTy75kh
      RABBITMQ_NODENAME: rabbit@rabbitmq1
    volumes:
      - "rabbitmq-var-1:/var/lib/rabbitmq"
    networks:
      - rabbitmq

  rabbitmq2:
    container_name: rabbitmq2
    image: rabbitmq:3.8-management
    ports:
      - "16673:15672"
      - "6673:5672"
    environment:
      RABBITMQ_DEFAULT_USER: rabbitmq
      RABBITMQ_DEFAULT_PASS: rabbitmq
      RABBITMQ_ERLANG_COOKIE: lJzQwkzj790Pct2IUMOFsyvWTy75kh
      RABBITMQ_NODENAME: rabbit@rabbitmq2
    volumes:
      - "rabbitmq-var-1:/var/lib/rabbitmq"
    networks:
      - rabbitmq

networks:
  rabbitmq:

haproxy.cfg:

global
    maxconn     20000
    log         127.0.0.1 local0
    user        haproxy
    chroot      /usr/share/haproxy
    pidfile     /run/haproxy.pid
    daemon

frontend  main
    bind :5672
    mode                 tcp
    log                  global
    option               httplog
    option               dontlognull
    option               http_proxy
    option forwardfor    except 127.0.0.0/8
    maxconn              8000
    timeout              client  30s

    acl url_static       path_beg       -i /static /images /javascript /stylesheets
    acl url_static       path_end       -i .jpg .gif .png .css .js

    #use_backend static          if url_static
    default_backend             rab

backend static
    mode        http
    balance     roundrobin
    timeout     connect 5s
    timeout     server  5s
    server      static 127.0.0.1:4331 check

backend rab
    mode        tcp
    balance     leastconn
    timeout     connect 5s
    timeout     server  30s
    timeout     queue   30s
    server  app1 127.0.0.1:8988 check
    server  app2 127.0.0.1:8989 check

python.py:

#!/usr/bin/env python
import pika

credentials = pika.PlainCredentials('rabbitmq', 'rabbitmq')
connection = pika.BlockingConnection(pika.ConnectionParameters(
        'localhost', 5672, 'bim', credentials))
channel = connection.channel()

channel.queue_declare(queue='test', durable=True)

channel.basic_publish(exchange='',
                      routing_key='test',
                      body='Hello World!')
print(" [x] Sent 'Hello World!'")
connection.close()