Clojure SSE订阅服务器-分布在多个服务器上?
看着这个框架的演示——它依赖于内置的底座——我注意到: 基本上,这会保留订阅者的映射(EventSource客户端的映射)并向他们发送聊天事件Clojure SSE订阅服务器-分布在多个服务器上?,clojure,cluster-computing,server-sent-events,pedestal,Clojure,Cluster Computing,Server Sent Events,Pedestal,看着这个框架的演示——它依赖于内置的底座——我注意到: 基本上,这会保留订阅者的映射(EventSource客户端的映射)并向他们发送聊天事件 我的问题是-假设您希望跨多个服务器扩展此应用程序。做这件事的idomatic模式是什么?(希望在Clojure基座中——但可能是整个Java领域的解决方案)目前没有免费的午餐/银弹用于多节点并行。大多数人使用SOA方法(REST、队列等)来并行化他们的应用程序。当然,总的来说,你会失去协调资源访问的能力,而解决方法也可能是黑客的。我听说Immutant(
我的问题是-假设您希望跨多个服务器扩展此应用程序。做这件事的idomatic模式是什么?(希望在Clojure基座中——但可能是整个Java领域的解决方案)目前没有免费的午餐/银弹用于多节点并行。大多数人使用SOA方法(REST、队列等)来并行化他们的应用程序。当然,总的来说,你会失去协调资源访问的能力,而解决方法也可能是黑客的。我听说Immutant(Jboss)XA事务可以自动应用于缓存和消息传递的工作方式,但我个人没有使用这种方法。您可能会发现另一个有用的工具是Storm,它允许您为分布式处理设置拓扑,添加一些声明性抽象,以代替繁琐的手动开发和提供等效的服务体系结构。Hmm,这可能会有所帮助。
(defn publish
[request]
(doseq [sse-context @subscribers]
(try
(sse/send-event sse-context "message" (-> request :form-params (get "msg")))
(catch java.io.IOException e
(remove-subscriber sse-context))))
{:status 204})