gpt4 book ai didi

java - Spring MVC 类似 AMQP 消息的处理

转载 作者:行者123 更新时间:2023-12-02 05:07:26 24 4
gpt4 key购买 nike

我想要做的是使用 Spring-webmvc 注释(例如 @RequestMapping@ 处理 Http 请求)以非常相似的方式处理 AMQP 消息但是,我的源对象将是 AMQP 消息,而不是 Http 请求。 AMQP 消息请求将有两个 header ,例如 -

method="POST"
url="/api/myobjects/{someParam}"

有效负载将包含 json 格式的数据。

如果您注意到了,这只不过是映射到 AMQP 消息的 HTTP REST api。例如,我希望能够编写像处理程序一样的 Controller -

@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 注释。它们接近我想要的,但不允许根据 header 参数(尤其是 REST url)路由到处理程序方法。

我不希望有现成的解决方案可用于此。只是想确保我选择了最好的选择。我认为的一些选项是(按优先顺序排列)

  • 如果 spring-webmvc 注解处理机制是可扩展的,只需扩展它以使用 AMQP 消息作为源而不是 Http Request
  • 修改 spring-webmvc 注解处理机制,以 AMQP 消息作为输入而不是 Http Request
  • 使用自定义注释及其处理器编写您自己的解决方案,我认为这是一项非常复杂的任务
  • 或者除上述之外还有其他可能的方法吗?

任何指导/方向表示赞赏。

最佳答案

我认为起点可能是 AbstractMethodMessageHandler在 spring-messaging 中。

目前有一个SimpAnnotationMethodMessageHandler调用 @Controller 的 websockets 实现s。

您可以使用@RabbisListener具有 Message<?> 的方法参数(Spring AMQP 会将底层 Rabbit 消息转换为 spring-messaging 消息,包括 header )。然后,调用消息处理程序以路由到适当的 Controller 方法。

如果您想出一个强大的实现方案,请考虑 contributing it .

关于java - Spring MVC 类似 AMQP 消息的处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27653152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com