【发布时间】:2014-12-26 05:30:05
【问题描述】:
我想要做的是以非常相似的方式处理 AMQP 消息,使用 spring-webmvc 注释处理 Http 请求,例如 @RequestMapping、@ RequestParam 等。但是,我的源对象不是 Http Request,而是 AMQP 消息。 AMQP 消息请求会有两个头,例如 -
method="POST"
url="/api/myobjects/{someParam}"
payload 将包含 json 格式的数据。
如果您已经注意到,这只不过是映射到 AMQP 消息的 HTTP REST api。 我希望能够编写一个像处理程序这样的控制器,例如 -
@Controller
public class MyObjectHandler {
@RequestMapping(value="/api/myobjects/{someParam}", method="POST")
public MyObject createMyObject(@Payload MyObject myObj, @PathParam String someParam) {
//... some processing
return myObj;
}
// ...more handlers
}
我查看了spring-amqp/rabbitmq 注释和spring integration 注释。它们接近我想要的,但不允许基于标头参数路由到处理程序方法,尤其是 REST url。
我不希望为此提供现成的解决方案。只是想确保我选择了最好的选择。我认为的一些选项是(按优先顺序)
- 如果spring-webmvc注解处理机制是可扩展的,只需将其扩展为使用AMQP消息作为源而不是Http请求
- 修改spring-webmvc注解处理机制,将AMQP消息作为输入,而不是Http Request
- 使用自定义注释及其处理器编写您自己的解决方案,我认为这是一项非常复杂的任务
- 或者除上述之外的任何其他可能的方法?
感谢任何指导/方向。
【问题讨论】:
-
我会不理会 spring-mvc 并写一些 amqp 到 http 层,对我来说似乎更容易
标签: java spring spring-mvc spring-integration spring-amqp