我在Java中为Slack创建一个聊天机器人,如下所示:
要了解此图表,请考虑" Bot"作为Slack用户进行处理,而不是人类,是计算机程序。
有两个组件,聊天机器人本身和语法分析器。解析器需要很长时间才能启动,所以我不能为chatbot处理的每条消息启动解析器。相反,解析器必须始终运行并响应来自聊天机器人的查询。
我想将所有组件部署到Heroku。据我所知,部署这些组件有三种选择:
问题是如何最好地实现两个组件之间的同步双向通信。
到目前为止,我查看了以下可能的解决方案:
localhost
和某个端口进行通信):这在AWS EC2上工作(通过AWS Elastic Beanstalk),但是,它似乎不容易工作在Heroku上(如here所述),我想从AWS迁移到Heroku web
进程运行,并公开chatbot可以访问的REST接口我更愿意将组件分离,因此我倾向于选项2和选项3。
消息排队插件肯定会有效,但它们是否都针对异步通信?因为我只需要同步通信。如果对解析器的请求立即返回,则没有任何好处,因为机器人无论如何只能在解析器的结果可用时才回复消息。因此,异步通信在这里可能有点过头了。
我错过了任何可能的解决方案吗?对于这个用例,什么是强大而高效的架构?