kaliop/queueingbundle-sqs

Kaliop 队列处理包 - AMAZON SQS 插件

v0.10.1 2019-10-28 22:30 UTC

This package is auto-updated.

Last update: 2024-09-21 02:33:00 UTC


README

将 AWS 简单队列服务支持添加到 Kaliop 队列处理包

参考:http://aws.amazon.com/sqs/ 和 http://aws.amazon.com/sqs/ 分别。

因为它比基本队列处理包有更高的要求,所以它拥有自己的包

安装

  1. 使用 Composer 安装该包。

  2. 在您的内核类注册Bundles()中启用 KaliopQueueingPluginsSQSBundle 包。

  3. 如果不是开发环境,请清除所有缓存

用法

  1. 如果您没有 AWS 账户,请在 http://aws.amazon.com/ 注册一个

  2. 使用网页界面创建 SQS 队列: https://console.aws.amazon.com/sqs/home

  3. 根据您的 AWS 账户设置配置

    • 编辑此包中的 parameters.yml 参数
  4. 检查您是否可以列出队列

     php app/console kaliop_queueing:managequeue list -isqs
    
     php app/console kaliop_queueing:managequeue info -isqs <queue>
    
  5. 向队列推送消息

     php app/console kaliop_queueing:queuemessage -isqs <queue> <jsonpayload>
    
  6. 从队列接收消息

     php app/console kaliop_queueing:consumer -isqs <queue>
    

运行测试

如果您想在 Travis 之外运行测试套件,您需要

  1. 拥有 AWS SQS 账户

  2. 设置以下环境变量: SYMFONY__SQS__KEY SYMFONY__SQS__SECRET (注意,目前的测试配置默认使用 us-east-1 区域)

  3. 在某个地方检出此包(不需要安装完整的 Symfony 环境)

  4. 运行 composer install

  5. 运行 php vendor/phpunit/phpunit/phpunit Tests/phpunit

注意事项

  • SQS 并没有像 RabbitMQ 那样原生支持路由键,也没有交换/队列拓扑分离。此包确实添加了对路由键的支持,但并不理想;您被鼓励设置多个队列,而不是使用多个消费者来消费基于路由键的消息,尤其是在并行传输大量消息时。

    此包支持路由键的方式如下

    • 如果生产者设置了路由键,它将在发送消息时将其添加到消息属性中
    • 每个消费者总是请求队列中所有可用的消息
    • 如果消费者设置了路由键,并且消息在消息属性中也有一个,则进行匹配
    • 在匹配的情况下,进行标准处理:消费者向 SQS 发送 ACK 调用来表示接收消息
    • 在没有匹配的情况下,消费者不会向 SQS 发送 ACK 请求;SQS 将等待一段时间,然后将消息放回队列中(它等待的时间可以按队列配置)

    如果您发现 RabbitMQ 和此包中匹配路由键的方式有任何差异,请将其作为错误报告。

  • SQS 不支持为每条消息设置 TTL,只支持为每个队列设置,因此所有具有 TTL 参数的公共方法的 MessageProducers 在使用 SQS 驱动时都会忽略它

  • SQS不能保证消息以发送时的相同顺序交付,除非您使用FIFO队列。要使用FIFO队列:- 创建FIFO队列 - 在捆绑配置中,为您的队列设置message_group_id设置值 - 如果您使用自定义唯一消息ID,您将不得不设置一个实现MessageDeduplicationIdCalculatorInterface接口的服务,并通过使用队列的message_deduplication_id_calculator设置将其连接起来

  • SQS保证消息交付,但它不能保证每条消息只交付一次。如果这种约束很重要,请在您的应用程序中构建唯一消息ID并管理它们 - 或者使用FIFO队列。

  • 要深入了解SQS和RabbitMQ的比较,请参阅例如http://blog.turret.io/rabbitmq-vs-amazon-sqs-a-short-comparison/

License Latest Stable Version Total Downloads

Build Status Scrutinizer Code Quality SensioLabsInsight