我正在使用 Spring Cloud SQS 消息传递来监听指定的队列。因此使用@SqsListener注释如下:
@SqsListener(value = "${QUEUE}", deletionPolicy = SqsMessageDeletionPolicy.ALWAYS )
public void receive(@Headers Map<String, String> header, @Payload String message) {
try {
logger.logInfo("Message payload is: "+message);
logger.logInfo("Header from SQS is: "+header);
if(<Some condition>){
//Dequeue the message once message is processed successfully
awsSQSAsync.deleteMessage(header.get(LOOKUP_DESTINATION), header.get(RECEIPT_HANDLE));
}else{
logger.logInfo("Message with header: " + header + " FAILED to process");
logger.logError(FLEX_TH_SQS001);
}
} catch (Exception e) {
logger.logError(FLEX_TH_SQS001, e);
}
}
Run Code Online (Sandbox Code Playgroud)
我能够成功连接指定的队列并读取消息。在发送消息之前,我将消息属性设置为“Key1”=“Value1”以及 aws 控制台中的消息。以下是消息正文:
{
"service": "ecsservice"
}
Run Code Online (Sandbox Code Playgroud)
我期望“标头”收到所有消息属性的映射以及 Key1 和 Value1。但我收到的是: {service=ecsservice} …