Tôi có một Procfile như vậy:Giao tiếp giữa hai quá trình trên Heroku (những gì cổng để sử dụng)
web: bundle exec rails server -p $PORT
em: script/eventmachine
Quá trình em
cháy lên một eventmachine với start_server
(cổng ENV['PORT']
) và quá trình web của tôi thỉnh thoảng cần phải giao tiếp với nó.
Câu hỏi của tôi là quy trình web biết cổng giao tiếp với nó như thế nào? Nếu tôi hiểu chính xác heroku nó sẽ gán cho bạn một cổng ngẫu nhiên khi quá trình khởi động (và nó có thể thay đổi nếu ps bị giết hoặc khởi động lại). Cảm ơn!
Đúng, tôi có thể làm một hàng đợi năm mươi trong redis hoặc một cái gì đó, nhưng bạn có chắc chắn đó là về các quá trình không thể giao tiếp với nhau? Máy chủ/máy khách Eventmachine có thể nói chuyện với nhau qua tcpip tiêu chuẩn giống như quy trình web chấp nhận yêu cầu tcpip đến. Tôi chỉ không biết cổng để kết nối. Cảm ơn câu trả lời mặc dù - trang 12factor của Adam Wiggins thực sự thú vị. –
Có. Quy trình web của bạn được gán một cổng để nhận các yêu cầu từ thế giới bên ngoài - không có liên lạc quy trình liên ngành nào khác. Xem câu hỏi tương tự ở đây: http://stackoverflow.com/questions/9322599/tcp-socket-communication-between-processes-on-heroku-worker-dyno/9453432#9453432 –
Ok cảm ơn, điều này rất hữu ích. Tôi đã kết thúc bằng cách sử dụng một pub/mô hình phụ với Redis mà làm việc. Mặc dù nó không bền, vì vậy tôi có thể thử iron_mq sau này và thăm dò ý kiến nó từ eventmachine thay thế. Cảm ơn đã giúp đỡ! Tôi rất trân trọng điều này. –