Мы использовали RabbitMQ в качестве брокера.Он находится между нашим клиентом, написанным на Go с NGINX, и сервером API.Мы успешно использовали его до сих пор.Размер используемого нами сообщения увеличился до ~ 20 МБ.Отправка этого большого сообщения постоянно вызывает следующую ошибку:
= ОТЧЕТ ОБ ОШИБКАХ ==== 20 октября 2018 года :: 11: 17: 59 === Ошибка в процессе <0.21106.0> вкл.узел 'rabbit @ pc11213' со значением выхода: {[{reason, {badmatch, {more, << 8001224 bytes >>, {http_req, # Port <0.99287>, ranch_tcp, keepalive, <0.21106.0>, << 4байты >>, 'HTTP / 1.1', {{127,0,0,1}, 58904}, << 9 байтов >>, неопределенный, 15672, << 39 байтов >>, неопределенный, << 0 байтов >>, [], [{exchange, << 12 байтов >>}, {vhost, << 3 байта >>}], [{<< 4 байта >>, << 15 байтов >>}, {<< 10 байтов>>, << 18 байтов >>}, {<< 14 байтов >>, << 8 байтов >>}, {<< 13 байтов >>, << 26 байтов >>}, {<< 12 байтов >>, << 16 байтов >>}, {<< 15 байтов >>, << 4 байта >>}], [{<< 14 байтов >>, 20432940}, {<< 17 байтов >>, [<< 8байты >>]}, {<< 6 байтов >>, не определено}, {<< 12 байтов >>, {<< 11 байтов >>, << 4 байта >>, []}}, {<< 17 байтов>>, не определено}, {<< 13 байт >>, не определено}, {<< 19 байт >>, не определено ...
- просмотр сетевого трафика с помощью Wireshark показывает, чтосервер отправляет ответ 500 в середине потока передачи TCP, отправленного клиентом, которыйуказывает, что сервер не может справиться с входящими данными
Мы используем конечную точку управления HTTP и плагины:
=INFO REPORT==== 19-Oct-2018::14:28:44 === Server startup complete; 6 plugins started.
* rabbitmq_management
* rabbitmq_web_dispatch
* rabbitmq_management_agent
* cowboy
* cowlib
* amqp_client
Мы попытались изменить конфигурацию сервера rabbitMQ / cowboy на noнапример,
[{rabbitmq_management,
[{listener, [{port, 15672},
{cowboy_opts, [{ max_request_line_length, 16000 },{max_keepalive, 1000}]}
]}
]
}].
- значение по умолчанию max_request_line_length было 8000 -> увеличено до 160000 как я могу быть уверен, что эти параметры действительно применяются?
- также изменяет требование.Header.Set («Content-Type», «multipart / form-data») не помогли клиенту go
Поэтому мы считаем, что нам нужно либо отойти от rabbitMQ, либо использовать какой-то другойпротокол с другим плагином.
Мы считаем, что rabbitMQ не должен ограничиваться размером сообщения.Мы не будем пытаться ссылаться на полезную нагрузку в сообщении.Любые предложения о том, как мы можем увеличить допустимый размер сообщения?
Редактировать: Мы попытались внести дополнительные изменения в настройки ковбоя:
{rabbitmq_management,
[{cors_allow_origins,[]},
{cors_max_age,1800},
{http_log_dir,none},
{listener,
[{port,15672},
{cowboy_opts,
[{compress,true},
{max_request_line_length,160000},
{max_keepalive,1000},
{idle_timeout,120000},
{inactivity_timeout,120000},
{request_timeout,120000}]}]},
{load_definitions,none},
{management_db_cache_multiplier,5},
{process_stats_gc_timeout,300000},
{stats_event_max_backlog,250}]},
, которые привели к той же ошибке:
2018/10/24 16:31:06 Размер списка файлов: 20431558 2018/10/24 16:31:06 Извлеченный pid: 20. # 2018/10/24 16:31:07 сообщение http://derived: # @ localhost: # / api / exchanges /% 2F / производный-обмен / публикация : net / http: HTTP / 1.x транспортное соединение разорвано: запись tcp 127. # ->127. #: запись: сброс соединения по пиру