如何通知我的服务器应用程序?

How to notify my server application?

我在 Amazon S3 上定期向我的 bucket 发送一些文件。但是,我需要通知我的服务器我的存储桶已更新,这样他们就可以下载新文件。

我想实施 pushpull 方法,或类似的方法。 我正在考虑构建一个 ActiveMQ 环境,以便与 topics 一起工作。不过,我想知道是否真的有必要,也许我对这个问题反应过度了,你们可能有更简单的解决方案。

[编辑]

我一直在尝试用 shell 做一些非常简单的事情,到目前为止我得到了这个:

#!/bin/bash

set -x

CLIENTID=$(hostname -f)
MOM_ADDRESS="mom.company.solutions"
DESTINATION="Company.Product.Sync"
TYPE="topic"

USER="admin"
PASSWORD="admin"

# USER="user"
# PASSWORD="user"

produce(){
    curl -u "${USER}":"${PASSWORD}" -d "body=${MESSAGE}" "http://${MOM_ADDRESS}:8161/api/message/${DESTINATION}?type=${TYPE}"
}


consume(){
    while [ true ];
    do
        wget --user "${USER}" --password "${PASSWORD}" "http://${MOM_ADDRESS}:8161/api/message/${DESTINATION}?type=${TYPE}&clientId=${CLIENTID}"
        sleep 5
    done
}

case "" in
    produce)
        MESSAGE=""
        produce
        ;;
    consume) 
        consume
        ;;
    *)
        echo "Usage: jasper {produce|consume}"
        exit 1
        ;;
esac

用法:

./queue produce './sync download'
./queue consume

只需启用 S3 事件通知:http://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html

您可以将它们转到 SNS 主题、SQS 队列或 Lambda 函数。