2015-07-27 9 views
7

Chciałbym zdefiniować dublowanie dla wszystkich moich kolejek domyślnie. Obecnie mam użyć rabbitmqctl kiedy węzeł wynosi:Definiowanie zasad rabbitmq w pliku konfiguracyjnym

rabbitmqctl set_policy ha-all "" '{"ha-mode":"all"}' 

Jeśli jeden z moich węzłów nie, muszę pamiętać, aby ponownie uruchomić ten kod na restart.

Czy istnieje sposób automatycznego konfigurowania mojego węzła do korzystania z kolejek dublowanych?

Odpowiedz

1

Nie można ustawić zasad w pliku rabbitmq.config. Jednym z rozwiązań jest uruchomienie rmq przy użyciu skryptu inicjalizacyjnego i umieszczenie w nim polecenia rabbitmqctl, tak aby były uruchamiane za każdym razem, gdy rmq uruchamia się lub uruchamia ponownie.

7

Zasady mogą zostać określone w pliku definicji, do którego można się odwołać z pliku konfiguracyjnego.

Przykład jak mam ustawić określoną politykę (nie wiem, czy uda ha być określone w polityce):

/etc/rabbitmq/rabbitmq.config

[ 
{rabbit, 
    [{vm_memory_high_watermark, 0.8}] 
}, 
{rabbitmq_management, 
    [{listener, [{port, 15672}]}, 
    {load_definitions, "/etc/rabbitmq/rabbitmq_definitions.json"}, 
    {http_log_dir, "/var/log/rabbitmq/management_http.log"}] 
} 
]. 

/etc/RabbitMQ/rabbitmq_definitions.json

{  "users":[ 
      {"name":"rabbot","password_hash":"Cvse5iGOg20UqUq7Za9D1tatOJnMVDru4GHtxqc02g7zj5ur","tags":""}, 
      {"name":"rabnet","password_hash":"CqqG2fwvH6xz64NpibGJx2M7ZCyFnR1BQBM+C0KH2qRPmVxF","tags":"administrator"}], 
    "vhosts":[ 
      {"name":"/"}], 
    "permissions":[ 
      {"user":"viabot","vhost":"VIA","configure":".*","write":".*","read":".*"}, 
      {"user":"vianet","vhost":"VIA","configure":".*","write":".*","read":".*"}], 
    "parameters":[], 
    "policies":[ 
      {"vhost":"VIA","name":"DLX","pattern":".*","apply-to":"queues","definition":{"dead-letter-exchange":"dead_letter"},"priority":0} 
      ], 
    "queues":[ 
      {"name":"store_to_es","vhost":"VIA","durable":true,"auto_delete":false,"arguments":{}}, 
      {"name":"store_to_mongodb","vhost":"VIA","durable":true,"auto_delete":false,"arguments":{}} 
      ], 
    "exchanges":[ 
      {"name":"data_incoming","vhost":"VIA","type":"fanout","durable":true,"auto_delete":false,"internal":false,"arguments":{}}, 
      {"name":"sms_incoming","vhost":"VIA","type":"fanout","durable":true,"auto_delete":false,"internal":false,"arguments":{}} 
      ], 
    "bindings":[ 
      {"source":"data_incoming","vhost":"VIA","destination":"store_to_es","destination_type":"queue","routing_key":"","arguments":{}}, 
      {"source":"sms_incoming","vhost":"VIA","destination":"store_to_mongodb","destination_type":"queue","routing_key":"","arguments":{}} 
    ] 
} 

dzielę ten plik konfiguracyjny i definicje f jak to było niemożliwe, aby dowiedzieć się tego na stronie RabbitMQ.

Uwaga: config pracował na RabbitMQ 3.6.1 działa na Ubuntu 14.04  

+0

Informacje można znaleźć tutaj: https://www.rabbitmq.com/management.html –

0

szukałem tej samej rzeczy i znaleźć na to pytanie. Aby dodać więcej szczegółów do odpowiedzią IvanD, ten, jak to zrobiłem:

First: sudo nano /etc/rabbitmq/rabbitmq.config (komenda ta może być różna w zależności od używanego systemu operacyjnego)

[ 
    {rabbit, 
    [ 
     {default_vhost,<<"/">>}, 
     {default_user,<<"someuser">>}, 
     {default_pass,<<"somepassword">>}, 
     {default_permissions, [<<".*">>, <<".*">>, <<".*">>]}, 
     {default_user_tags, [administrator]} 
    ] 
    }, 
    {rabbitmq_management, 
    [{listener, [{port, 15672}]}, 
     {load_definitions, "/etc/rabbitmq/rabbitmq_definitions.json"}, 
     {http_log_dir, "/var/log/rabbitmq/management_http.log"}] 
    } 
]. 

Następnie należy utworzyć dodatkową json: sudo nano /etc/rabbitmq/rabbitmq_definitions.json (to polecenie może być różny w zależności od systemu operacyjnego) I to zawartość:

{ 
    "vhosts":[ 
     {"name":"/"} 
    ], 
    "policies":[ 
     {"vhost":"/","name":"ha","pattern":"", "definition":{"ha-mode":"all","ha-sync-mode":"automatic","ha-sync-batch-size":5}} 
    ] 
} 

WAŻNA UWAGA: ha-sync-partia-size jest obsługiwane tylko w wersjach RabbitMQ powyżej 3.6.0! https://www.rabbitmq.com/ha.html#sync-batch-size Jeśli Twój królik jest starszy, usuń ustawienie z rabbitmq_definitions.json.

Używam Ubuntu 14.04 Trusty i Rabbitmq v.3.6.2.

Powiązane problemy