Как устранить неполадки при открытии сокета - amqp / rabbitmq-c
Я пытаюсь приветствовать реализацию AMQP rabbitmq-c в Hello World.
У меня есть небольшой сценарий, взятый из примера, включенного в источник rabbitmq-c. Вот фрагмент:
socket = amqp_tcp_socket_new(conn);
if (!socket) {
die("creating TCP socket");
}
status = amqp_socket_open(socket, hostname, port);
if (status) {
die(amqp_error_string2(status));
}
printf ("Error opening socket: %s\n",strerror(errno));
Если я запускаю это на том же хосте, что и серверный процесс rabbitmq (т.е. hostname
является localhost
), затем скрипт подключается и отправляет сообщение, полученное слушателем. Если я запускаю эту же программу в другом боксе и предоставляю имя хоста бокса, на котором работает Rabbit, то он умирает, когда пытается открыть сокет с -9, что является просто "произошла ошибка сокета". "errno" это просто EINPROGRESS
что ожидается, когда я пытаюсь открыть неблокирующий сокет. (Это та же ошибка, что и при успешном выполнении программы).
При сбое в журнале сервера rabbitmq ничего не отображается.
Хотя мне бы очень хотелось, если бы кто-нибудь конкретно сказал мне, что здесь происходит, мне действительно нужна удочка. Я понятия не имею, как получить нужную мне информацию из системы, даже не совсем то, с чего начать. Я никогда не делал Unix ввода / вывода раньше. Может ли кто-нибудь сделать некоторые предложения по отладке следующих шагов?
1 ответ
Я не могу предложить какой-либо прямой совет о том, что искать дальше... но из вашего описания, похоже, что машина, на которой размещается rabbitmq, не позволяет использовать надлежащие порты TCP/IP для связи.
Я столкнулся с этим, когда несколько месяцев назад установил RabbitMQ на RedHat Linux. Мне пришлось настроить различные параметры безопасности в брандмауэре и в selinux
настройка безопасности, чтобы разрешить правильные порты