2017-02-18 11 views
0

У меня есть приложение Node, которое будет использовать RabbitMQ, и я использую amqplib для доступа к нему. Я понимаю, что соединения TCP/IP с RabbitMQ и дорогие каналы дешевы, поэтому создайте одно соединение, а затем несколько каналов.AMQP NodeJS Connection

Что я немного смущен, так это то, как я оцениваю одно соединение, которое можно использовать во всем приложении? Большинство учебных пособий, по-видимому, указывают на то, что соединение открыто для какой-либо цели и затем снова закрывается, чтобы снова открываться, когда это необходимо.

Я бы подумал, что это приведет к нескольким соединениям, если несколько пользователей будут пытаться выполнить действие, требующее доступа RabbitMQ одновременно.

ответ

0

Я полагаю, ваши пользователи подключены к вашему серверу, который отличается от каждого пользователя, напрямую связан с rabbitmq. Затем, на стороне сервера, вы можете сохранить только одно соединение с rabbitmq.

Для этой цели я бы рекомендовал создать module, чтобы отслеживать ваше соединение через ваше приложение.

Обратите внимание, что AMQP имеет heartbeat особенности:

AMQP 0-9-1 предлагает сердцебиение, чтобы гарантировать, что слой приложения быстро узнает о распавшихся соединениях (а также полностью не отвечающие сверстники). Heartbeats также защищают от определенного сетевого оборудования, которое может прекратить «простоя» TCP-соединений.

По умолчанию amqplib's hearbeat установлен в 0, что означает отсутствие биения.