【发布时间】:2017-02-06 21:33:10
【问题描述】:
也许有人对我的以下问题有想法:
我目前在一个项目中,我想将 AWS SQS 与 Spring Cloud 集成一起使用。对于接收者部分,我想提供一个 API,用户可以在队列上注册一个“消息处理程序”,这是一个接口,将包含用户的业务逻辑,例如
MyAwsSqsReceiver receiver = new MyAwsSqsReceiver();
receiver.register("a-queue-name", new MessageHandler(){
@Override
public void handle(String message){
//... business logic for the received message
}
});
我找到了例子,例如 https://codemason.me/2016/03/12/amazon-aws-sqs-with-spring-cloud/ 并阅读文档 http://cloud.spring.io/spring-cloud-aws/spring-cloud-aws.html#_sqs_support
但我在那里发现的唯一“连接”处理传入消息的功能是方法上的注释,例如@SqsListener 或 @MessageMapping。
不过,这些注释被固定为某个队列名称。所以现在我不知所措,如何将我提供的“MessageHandler”(来自我的 API)动态“连接”到指定队列名称的传入消息。
在配置示例中有一个SimpleMessageListenerContainer,它得到一个QueueMessageHandler 集,但是这个QueueMessageHandler 似乎没有
成为设置我的处理程序或覆盖其方法并提供我自己的QueueMessageHandler 子类的正确位置。
我已经使用 Spring Amqp 集成和 RabbitMq 做了类似的事情,并认为 AWS SQS 在这里也将类似。
有没有人有想法,如何做到这一点?
谢谢+再见, 西门
编辑:
我发现 Spring JMS 实际上可以做到这一点,例如www.javacodegeeks.com/2016/02/aws-sqs-spring-jms-integration.html。有谁知道,使用 JMS 协议的后果是好是坏?
【问题讨论】:
-
您好,您找到解决问题的方法了吗?我有同样的问题,正在寻找解决方案。谢谢
-
试试我在@user1167253发布的解决方案
标签: spring rabbitmq spring-cloud amazon-sqs