# sqs-spring-boot-starter **Repository Path**: duxinglangzi/sqs-spring-boot-starter ## Basic Information - **Project Name**: sqs-spring-boot-starter - **Description**: spring boot 使用 Aws SqsListener - **Primary Language**: Java - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2022-06-29 - **Last Updated**: 2025-01-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # sqs-spring-boot-starter # Aws Sqs Spring Boot Starter 使用实例 ### 在spring boot 项目配置文件 application.yml内增加以下内容 ```yaml duxinglangzi: queue: sqs: instances: defaults: # 默认的,如果不设置,程序会将第一个设置为默认的 region: us-west-1 secret-access-key: Ya8raaaaaaaaaaaaaaaaaaaad8AjBii29x access-key-id: AKbbbHbbbbbbbUF27W second: # 第二个 region: us-west-2 secret-access-key: Ya8rccccccccccccccccccccd8AjBii29x access-key-id: AKIddddddddd7UF27W third: # 第三个 region: us-east-1 secret-access-key: Ya8reeeeeeeeeeeeeeeeeeeeeAjBii29x access-key-id: AKfffffffffffUF27W wuqiong: sqs: url: https://sqs.us-west-1.amazonaws.com/1234567890/qiong-queue.fifo ``` ### 在spring boot 项目中的代码使用实例 (需在 使用EnableSqsListener 注解开启 sqs listener) ```java import com.duxinglangzi.sqs.starter.annotation.EnableSqsListener; import com.duxinglangzi.sqs.starter.annotation.SqsListener; import com.duxinglangzi.sqs.starter.container.QueueMessageAcknowledgment; import com.duxinglangzi.sqs.starter.enums.MessageDeletionPolicy; import org.springframework.beans.factory.annotation.Autowired; import software.amazon.awssdk.services.sqs.model.Message; import software.amazon.awssdk.services.sqs.model.SendMessageResponse; import org.springframework.stereotype.Service; @Service @EnableSqsListener public class SqsListenerTest { /** * 示例0: 通过配置队列名称进行消息拉取 * * @param message * @param acknowledgment * @return void * @author wuqiong 2022-06-28 17:28 */ @SqsListener(queueUrl = "qiong-queue.fifo", deletionPolicy = MessageDeletionPolicy.NEVER) public void oneMessage(Message message, QueueMessageAcknowledgment acknowledgment) { System.out.println("[oneMessage] --->>> currentTimeMillis : " + System.currentTimeMillis() + "Fifo message body " + message.body()); boolean acknowledge = acknowledgment.acknowledge(); // 手动删除消息 } /** * 示例1: 通过动态参数进行配置 listener, 且删除策略为: NEVER(手动确认并删除) * * @param message * @param acknowledgment * @return void * @author wuqiong 2022-06-28 17:28 */ @SqsListener(queueUrl = "${wuqiong.sqs.url}", deletionPolicy = MessageDeletionPolicy.NEVER) public void oneMessage(Message message, QueueMessageAcknowledgment acknowledgment) { System.out.println("[oneMessage] --->>> currentTimeMillis : " + System.currentTimeMillis() + "Fifo message body " + message.body()); boolean acknowledge = acknowledgment.acknowledge(); // 手动删除消息 } /** * 示例2: 通过指定队列地址, 且删除策略为默认的: SUCCESS , 此时方法无需参数 QueueMessageAcknowledgment * * @param message * @return void * @author wuqiong 2022-06-28 17:28 */ @SqsListener(queueUrl = "https://sqs.us-west-1.amazonaws.com/1234567890/qiong-queue.fifo") public void twoMessage(Message message) { System.out.println("[twoMessage] --->>> currentTimeMillis : " + System.currentTimeMillis() + "Fifo message body " + message.body()); } /** * 示例3: 通过指定队列地址, 且删除策略为: ALWAYS(总是删除消息) , 此时方法无需参数 QueueMessageAcknowledgment * * @param message * @return void * @author wuqiong 2022-06-28 17:28 */ @SqsListener(queueUrl = "https://sqs.us-west-1.amazonaws.com/1234567890/qiong-queue.fifo", deletionPolicy = MessageDeletionPolicy.ALWAYS) public void threeMessage(Message message) { System.out.println("[threeMessage] --->>> currentTimeMillis : " + System.currentTimeMillis() + "Fifo message body " + message.body()); } /** * 示例4: 发送一个消息到 sqs fifo 队列 * * @return void * @author wuqiong 2022-06-28 17:28 */ public void fourMessage() { // second 对应着配置文件第二个 CustomSqsClient.sentFifoMessage( "second", "https://sqs.us-west-1.amazonaws.com/1234567890/qiong-queue.fifo", "这是测试消息啊", "test-group-11111", "test-group", 3, null); } /** * 示例5: 发送一个消息到 sqs standard 队列 * * @return void * @author wuqiong 2022-06-28 17:28 */ public void fiveMessage() { // client name 不写, 默认使用配置文件里面的第一个 SendMessageResponse sendMessageResponse = CustomSqsClient.sentStandardMessage( null, "https://sqs.us-west-1.amazonaws.com/1234567890/qiong-standard-queue", "这是测试消息啊", 3, null); System.out.println(sendMessageResponse.messageId()); } } ```