Несколько Ruby EventMachines в одном процессе: возможно?

У меня ситуация, когда я хочу запустить несколько EventMachines в Ruby - есть ли у кого-нибудь опыт работы с этим? (Я могу написать тестовый пример, чтобы сделать это сам, если нет. Следите за обновлениями).

Давайте проясним: я хочу сам создать экземпляры двух потоков и вызвать EventMachine.run в обоих потоках, так что у меня действительно есть два цикла реактора.

Причина в том, что я пишу асинхронную шину сообщений с гемом AMQP, который использует EventMachine. Это нормально, но я хочу сделать его отдельным модульным компонентом, который можно использовать в двух приложениях:

  • в том, который имеет собственный блокирующий цикл графического интерфейса пользователя (который не может быть смоделирован путем вызова тика из EventMachine - он действительно блокируется, и он делает это в библиотеке C, поэтому я не могу его взломать). Это просто - просто запустите EM в его собственном потоке и делитесь входящими сообщениями между циклами потокобезопасным способом;
  • и другое приложение, которое само работает в цикле реактора, которое я потенциально может делиться с кодом AMQP (что хорошо для проблем безопасности потоков, хотя я все равно должен решить их для вышеуказанного приложения). Это тот, который заставил меня задуматься ...Могу ли я поделиться кодом шины сообщений с указанным выше приложением, запустив две отдельные машины EventMachines?

У кого-нибудь есть мысли?

7
задан Matt 23 November 2011 в 19:03
поделиться