- Need to add sdk dependency:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-aws-messaging</artifactId>
</dependency>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR12</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
- Then we need to implement this code snippet to received messages from Amazon SQS:
@Component
@Slf4j
public class MessageConsumer {
private static final ObjectMapper OBJECT_MAPPER = Jackson2ObjectMapperBuilder.json().build();
@SqsListener(value = "${orders.queue.name}", deletionPolicy = SqsMessageDeletionPolicy.ON_SUCCESS)
public void processMessage(String message) {
try {
Event event = OBJECT_MAPPER.readValue(message, Event.class);
log.info("Received new SQS message and delete from queue: {}", message);
log.info("Convert to Event.class: {}", event);
} catch (Exception e) {
throw new RuntimeException("Cannot process message from SQS", e);
}
}
}
- Click widget in right side and click Queues
- Click on button Create queue
- Choose name of queue
- Everything we can keep by default for demo
- Down below click on button Create queue
- Click on navigation panel under Events -> Event buses.
- Click on button Create event bus
- Choose name of event bus
- Create
- Click on navigation panel under Events -> Rules.
- Click on button Create rule
- Choose the event bus that you previously created
- Click Next
- Choose under Event source AWS events or EventBridge partner events
- Add event pattern
- Click Next
- Target 1 - select AWS Service
- Select target type SQS queue
-
- Select your created queue
- Click on button next
- Create rule
-
Select your event bus from the list
-
Specify source that we created in event pattern com.demo
-
Specify any detail type(*required field)
-
Click on button Send